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" />
次に、ページ内のjava.util.RandomnextInt()
から直接または他のメソッドを呼び出します。
${random.nextInt()}
またはパラメータ付き:
${random.nextInt(10)}