JSTL c: Bedingung setzen

8

Brauchen Sie Ihre Hilfe, dieses Ding herauszufinden.
Szenario: Auf meiner JSP versuche ich,

zu drucken %Vor%

druckt das erste Mal gut (Beide Jahreszeiten drucken zunächst als "Winter"). Jetzt wollte ich eine if-Bedingung hinzufügen, um den Saisonwert zu ändern wie:

%Vor%

Bei Ausführung dieser if-Bedingung ändert sich Staffel 1 in "Sommer ist hier", aber Staffel 2 bleibt unverändert. Warum bleibt es so? Staffel 1 ist Teil von page1.jsp und Staffel 2 ist Teil von page2.jsp   und sie sind in parentPage.jsp enthalten

    
t0mcat 16.09.2011, 18:30
quelle

1 Antwort

14

Zwei Probleme:

Erstens ist Ihr Vergleich nicht gültig. Die zweite Bedingung ist immer true . Fix es entsprechend:

%Vor%

Zweitens speichern Sie die Variable im Standardseitenbereich, der nicht von den eingeschlossenen JSP-Seiten gemeinsam genutzt wird. Speichern Sie es stattdessen im Anforderungsbereich.

%Vor%

Aktualisieren : Wie aus den Kommentaren hervorgeht, nehmen diese JSPs nicht an derselben Anfrage teil. Sie sollten dann den Sitzungsumfang erfassen (und beachten Sie, dass auf diese Weise die Variable in allen Anfragen in allen Browserfenstern / Tabs verfügbar gemacht wird! Dies ist nicht wünschenswert). Sie sollten nur sicherstellen, dass Sie den Bereich in alle <c:set var="season"> angeben.

%Vor%

Der EL-Ausdruck ${season} wird nämlich nach dem ersten Nicht-Null-Attribut in den Seiten-, Anfrage-, Sitzungs- und Anwendungsbereichen suchen. Wenn Sie also <c:set> ohne einen expliziten Bereich ausführen, wird dieser im Seitenbereich gespeichert und auf derselben Seite abgerufen.

    
BalusC 16.09.2011, 18:32
quelle

Tags und Links