如何在JSTL中获取随机数?

时间:2010-02-16 13:13:14

标签: jsp jstl el

我希望得到类似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 个答案:

答案 0 :(得分:15)

这个有点丑,但它有效......

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

稍后您可以检查${rand mod 2 == 0}${rand mod 2 == 1}以获得所需的输出。

答案 1 :(得分:12)

您可以将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。)

答案 2 :(得分:10)

我只想指出,如果你使用EL 2.2(或更高版本),你可以直接调用EL中的任何方法(see this question),所以最快的方法可能是初始化bean

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

然后直接调用nextInt()或页面内java.util.Random内的任何其他方法:

${random.nextInt()}

或带参数:

${random.nextInt(10)}

答案 3 :(得分:3)

希望它有所帮助! random taglib

您也可以尝试 $ Math.random 功能。