12

JSTLで生成された次のコードのようなものを取得したい

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

4 に答える 4

16

これは少し醜いですが、うまくいきます...

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

後で、目的の出力を確認し${rand mod 2 == 0}${rand mod 2 == 1}取得できます。

于 2010-02-16T18:39:18.523 に答える
12

java.util.RandomBeanでラップして、を利用できます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(私は三項演算子の助けを借りてアウェイを最適化したことに注意してください)。

于 2010-02-16T13:36:58.590 に答える
10

EL 2.2(またはそれ以降)を使用している場合は、ELの任意のメソッドを直接呼び出すことができるので(この質問を参照)、おそらく最も速い方法はBeanを初期化することです。

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

次に、ページ内のjava.util.RandomnextInt()から直接または他のメソッドを呼び出します。

${random.nextInt()}

またはパラメータ付き:

${random.nextInt(10)}
于 2013-10-17T14:33:48.950 に答える