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>
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.