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

您可以用 bean 包装java.util.Random并使用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 回答
3

希望能帮助到你!随机标签库

你也可以试试$Math.random函数。

于 2010-02-16T13:31:17.727 回答