2010-02-16 18 views

Respuesta

15

Ésta es un poco feo, pero funciona ...

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

Más tarde se puede comprobar si hay ${rand mod 2 == 0} y ${rand mod 2 == 1} para obtener su salida deseada.

3

espero que ayude! random taglib

También puede intentar $ Math.random función.

12

Puede envolver java.util.Random en un frijol y hacer uso de 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(); 
    } 
} 

... para que pueda utilizarlo en su JSP de la siguiente manera:

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

... 

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

(nótese que optimizaron el c:choose distancia con la ayuda del operador ternario).

+1

Si siempre va a haber solo dos valores, me gustaría ir a nextBoolean;) – Photodeus

+0

solo una nota: si EL es compatible con los métodos de llamada, puede omitir el bean y usar '$ {random.nextInt(). ..} '(+1 se dio hace mucho tiempo :)) – Bozho

+0

@Bozho intenta que puedas entender. Necesita getter y setter – arvindwill

10

sólo quiero señalar, que si está utilizando EL 2.2 (o superior), puede llamar directamente a cualquier método en EL (see this question), por lo que probablemente el método más rápido es inicializar un grano

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

y luego invocar directamente nextInt() o cualquier otro método de java.util.Random dentro de la página:

${random.nextInt()} 

o con el parámetro:

${random.nextInt(10)} 
+0

EL supondría que java.util.Random tiene un método getNextInt(). Lo cual no tiene. –

+2

no, no lo haría, porque lo invocará con corchetes o con argumentos entre corchetes. Sección de ** Invocar métodos no getter ** en [página EL wiki] (http://stackoverflow.com/tags/el/info) – betatester07

+0

¡Ajá! Grandes cosas nuevas en EL! Gracias por el puntero! –

Cuestiones relacionadas