开发者

How to get a random number in JSTL?

I would like to get something like the开发者_开发问答 next code generated in JSTL

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


This one is a bit ugly but it works...

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

Later you can check for ${rand mod 2 == 0} and ${rand mod 2 == 1} to get your desired output.


You could wrap java.util.Random in a bean and make use of 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();
    }
}

...so that you can use it in your JSP as follows:

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

...

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

(note that I optimized the c:choose away with help of the ternary operator).


I just want to point out, that if you are using EL 2.2 (or above), you can directly call any method in EL (see this question), so probably the quickest method is to initialize a bean

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

and then directly invoke nextInt() or any other method from java.util.Random inside page:

${random.nextInt()}

or with parameter:

${random.nextInt(10)}


Hope it helps! random taglib

Also you may try $Math.random function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜