Jsp 如何在JSTL中获得随机数?

Jsp 如何在JSTL中获得随机数?,jsp,jstl,el,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&

我希望得到类似于JSTL中生成的下一个代码的东西

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

希望能有所帮助

您还可以尝试$Math.random函数。

您可以将其封装在一个bean中并利用

…以便您可以在JSP中使用它,如下所示:

<jsp:useBean id="random" class="com.example.RandomBean" scope="application" />

...

<div class="${random.nextInt % 2 == 0 ? 'redlogo' : 'greenlogo'}">

...

(请注意,我优化了
c:在三元运算符的帮助下选择

这一个有点难看,但它可以工作

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


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

我只想指出,如果您使用的是EL2.2(或更高版本),您可以直接调用EL()中的任何方法,因此最快的方法可能是初始化bean

<jsp:useBean id="random" class="java.util.Random" scope="application" />
或带有参数:

${random.nextInt(10)}

如果总是只有两个值,我会选择nextBoolean;)请注意,如果EL支持调用方法,那么您可以跳过bean并使用
${random.nextInt()…}
(+1是很久以前给出的:)@Bozho try您可以理解。它需要getter和setterEL假定java.util.Random有一个getNextInt()方法。它没有。不,它不会,因为您将用括号或括号中的参数调用它。读取中的调用非getter方法部分
${random.nextInt()}
${random.nextInt(10)}