我希望得到类似JSTL中生成的下一个代码
<c:choose>
<c:when test="${random number is even}">
<div class="redlogo">
</c:when>
<c:otherwise>
<div class="greenlogo">
</c:otherwise>
</c:choose>
答案 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 功能。