我想獲得像在JSTL產生如何在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產生如何在JSTL中獲得隨機數字?
<c:choose>
<c:when test="${random number is even}">
<div class="redlogo">
</c:when>
<c:otherwise>
<div class="greenlogo">
</c:otherwise>
</c:choose>
這個人是有點難看,但它的工作原理...
<c:set var="rand"><%= java.lang.Math.round(java.lang.Math.random() * 2) %></c:set>
之後,您可以檢查${rand mod 2 == 0}
和${rand mod 2 == 1}
得到您所需的輸出。
希望它能幫助下一個代碼! random taglib
您也可以試試$ Math.random函數。
你可以將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
摒棄了三元運算符的幫助)。
我只是想指出的是,如果你使用的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)}
EL會假定java.util.Random有一個方法getNextInt()。它沒有。 – 2014-02-14 10:11:44
不,它不會,因爲您將使用方括號或方括號中的參數調用它。閱讀**在[EL wiki頁面](http://stackoverflow.com/tags/el/info)中調用非getter方法**部分 – betatester07 2014-02-14 14:09:11
Aha,對! EL中的新東西!感謝指針! – 2014-02-21 11:04:13
如果總是隻有兩個值,我會去尋找nextBoolean;) – Photodeus 2010-06-02 22:06:23
只是一個註釋 - 如果EL支持調用方法,那麼你可以跳過這個bean並使用'$ {random.nextInt()。 ..}(+1很久以前就有:) :) – Bozho 2011-02-23 22:41:55
@Bozho試試你能理解。它需要getter和setter – arvindwill 2012-08-17 14:02:09