2010-02-16 47 views

回答

15

這個人是有點難看,但它的工作原理...

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

之後,您可以檢查${rand mod 2 == 0}${rand mod 2 == 1}得到您所需的輸出。

3

希望它能幫助下一個代碼! random taglib

您也可以試試$ Math.random函數。

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摒棄了三元運算符的幫助)。

+1

如果總是隻有兩個值,我會去尋找nextBoolean;) – Photodeus 2010-06-02 22:06:23

+0

只是一個註釋 - 如果EL支持調用方法,那麼你可以跳過這個bean並使用'$ {random.nextInt()。 ..}(+1很久以前就有:) :) – Bozho 2011-02-23 22:41:55

+0

@Bozho試試你能理解。它需要getter和setter – arvindwill 2012-08-17 14:02:09

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)} 
+0

EL會假定java.util.Random有一個方法getNextInt()。它沒有。 – 2014-02-14 10:11:44

+2

不,它不會,因爲您將使用方括號或方括號中的參數調用它。閱讀**在[EL wiki頁面](http://stackoverflow.com/tags/el/info)中調用非getter方法**部分 – betatester07 2014-02-14 14:09:11

+0

Aha,對! EL中的新東西!感謝指針! – 2014-02-21 11:04:13

相關問題