Ответ 1
Этот немного уродливый, но он работает...
<c:set var="rand"><%= java.lang.Math.round(java.lang.Math.random() * 2) %></c:set>
Позже вы можете проверить ${rand mod 2 == 0}
и ${rand mod 2 == 1}
, чтобы получить желаемый результат.
Я хотел бы получить что-то вроде следующего кода, сгенерированного в JSTL
<c:choose>
<c:when test="${random number is even}">
<div class="redlogo">
</c:when>
<c:otherwise>
<div class="greenlogo">
</c:otherwise>
</c:choose>
Этот немного уродливый, но он работает...
<c:set var="rand"><%= java.lang.Math.round(java.lang.Math.random() * 2) %></c:set>
Позже вы можете проверить ${rand mod 2 == 0}
и ${rand mod 2 == 1}
, чтобы получить желаемый результат.
Вы можете обернуть 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
с помощью тройного оператора).
Я просто хочу указать, что если вы используете EL 2.2 (или выше), вы можете напрямую вызвать любой метод в EL (см. этот вопрос), поэтому, вероятно, самым быстрым методом является инициализация bean
<jsp:useBean id="random" class="java.util.Random" scope="application" />
а затем непосредственно вызывать nextInt()
или любой другой метод из java.util.Random внутри страницы:
${random.nextInt()}
или с параметром:
${random.nextInt(10)}
Надеюсь, это поможет! random taglib
Также вы можете попробовать $Math.random.