2010-02-16 9 views

Antwort

15

Dieser ist ein bisschen hässlich, aber es funktioniert ...

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

Später können Sie für ${rand mod 2 == 0} überprüfen und ${rand mod 2 == 1} Ihre gewünschte Ausgabe zu erhalten.

3

Hoffe, es hilft erzeugt bekommen! random taglib

Auch können Sie versuchen $ Math.random Funktion.

12

Sie könnten java.util.Random in eine Bean einpacken und jsp:useBean verwenden.

package com.example; 

import java.util.Random; 

public class RandomBean { 
    private static final Random RANDOM = new Random(); 

    public int getNextInt() { 
     return RANDOM.nextInt(); 
    } 
} 

... so dass Sie es in Ihrer JSP verwenden können wie folgt:

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

... 

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

(beachten Sie, dass ich die c:choose weg mit Hilfe des ternären Operator optimiert).

+1

Wenn es immer nur zwei Werte geben würde, würde ich mich für nextBoolean entscheiden;) – Photodeus

+0

nur ein Hinweis - wenn EL Aufrufmethoden unterstützt, dann können Sie die Bean überspringen und '$ {random.nextInt() verwenden. ..} '(+1 wurde vor langer Zeit gegeben :)) – Bozho

+0

@Bozho versuchen Sie können verstehen. Es braucht Getter und Setter – arvindwill

10

Ich möchte nur darauf hinweisen, dass, wenn Sie mit EL 2.2 (oder höher), können Sie direkt eine beliebige Methode in EL nennen kann (see this question), also wahrscheinlich die schnellste Methode ist eine Bean

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

und dann nextInt() oder andere Verfahren aus java.util.Random Innenseite direkt aufzurufen:

${random.nextInt()} 

oder mit Parameter:

${random.nextInt(10)} 
+0

EL würde vermuten, dass java.util.Random eine Methode getNextInt() hat. Was es nicht hat. –

+2

nein, würde es nicht, weil Sie es mit Klammern oder mit Argumenten in Klammern aufrufen. Lesen Sie ** Aufrufen von Nicht-Getter-Methoden ** Abschnitt in [EL Wiki-Seite] (http://StackOverflow.com/Tags/EL/info) – betatester07

+0

Aha, richtig! Tolle neue Sachen in EL! Danke für den Zeiger! –

Verwandte Themen