Подтвердить что ты не робот

Как получить случайное число в JSTL?

Я хотел бы получить что-то вроде следующего кода, сгенерированного в JSTL

<c:choose>
    <c:when test="${random number is even}">
        <div class="redlogo">
    </c:when>
    <c:otherwise>
        <div class="greenlogo">
    </c:otherwise>
</c:choose>
4b9b3361

Ответ 1

Этот немного уродливый, но он работает...

<c:set var="rand"><%= java.lang.Math.round(java.lang.Math.random() * 2) %></c:set>

Позже вы можете проверить ${rand mod 2 == 0} и ${rand mod 2 == 1}, чтобы получить желаемый результат.

Ответ 2

Вы можете обернуть java.util.Random в bean и использовать jsp:useBean.

package com.example;

import java.util.Random;

public class RandomBean {
    private static final Random RANDOM = new Random();

    public int getNextInt() {
        return RANDOM.nextInt();
    }
}

... чтобы вы могли использовать его в своем JSP следующим образом:

<jsp:useBean id="random" class="com.example.RandomBean" scope="application" />

...

<div class="${random.nextInt % 2 == 0 ? 'redlogo' : 'greenlogo'}">

(заметим, что я оптимизировал c:choose с помощью тройного оператора).

Ответ 3

Я просто хочу указать, что если вы используете EL 2.2 (или выше), вы можете напрямую вызвать любой метод в EL (см. этот вопрос), поэтому, вероятно, самым быстрым методом является инициализация bean

<jsp:useBean id="random" class="java.util.Random" scope="application" />

а затем непосредственно вызывать nextInt() или любой другой метод из java.util.Random внутри страницы:

${random.nextInt()}

или с параметром:

${random.nextInt(10)}

Ответ 4

Надеюсь, это поможет! random taglib

Также вы можете попробовать $Math.random.