Ich habe eine Variable von einem Objekt auf meiner JSP-Seite:
<%= ansokanInfo.getPSystem() %>
Der Wert der Variablen ist NAT, was korrekt ist, und ich möchte bestimmte Seitenelemente für diesen Wert anwenden. Wie verwende ich ein Tag, um den Fall zu erkennen? Ich habe so etwas versucht
<c:if test = "${ansokanInfo.getPSystem() == 'NAT'}">
process
</c:if>
Aber oben wird nichts angezeigt. Wie soll ich es machen? Oder kann ich genauso gut Skriptlets verwenden, dh
<% if (ansokanInfo.getPSystem().equals("NAT"){ %>
process
<% } %>
Danke für jede Antwort oder jeden Kommentar.
Können Sie das bitte näher erläutern getPSystem() und ansokanInfo ? legen Sie sie in der Anfrage fest oder greifen Sie auf sie zu import ?
– Santhosh
29. Oktober 2014 um 5:32 Uhr
IIRC Ich habe sie in der Anfrage gesetzt und die Lösung (Workaround) bestand darin, Websphere zu aktualisieren, wie von BalusC angegeben, und dann kann eine neuere Version Bean-Methoden durch Tags aufrufen. Ich habe in der Frage Standard-Websphere und eine Version verwendet, bevor jsp und jstl Methoden ausführen konnten. Bitte finden Sie meine andere Frage, in der BalusC uns mitteilt, dass ich eine Websphere-Version verwendet habe, die eine neuere Version benötigte, um die Methoden aufrufen zu können.
– Niklas Rosenkranz
29. Oktober 2014 um 10:10 Uhr
Haben Sie Ihren App-Server jetzt auf 8 aktualisiert? und schlägt diese Lösung fehl?
– Santhosh
29. Oktober 2014 um 10:18 Uhr
@SanKrish Ich verwende JSP jetzt nicht. Ich hoffe, es funktioniert für Sie und wurde für neuere Versionen des App-Servers aktualisiert.
– Niklas Rosenkranz
23. Februar 2015 um 8:03 Uhr
Adam Gent
Versuchen:
<c:if test = "${ansokanInfo.PSystem == 'NAT'}">
JSP/Servlet 2.4 (ich glaube, das ist die Versionsnummer) unterstützt keine Methodenaufrufe in EL und unterstützt nur Eigenschaften. Die neuesten Servlet-Container unterstützen Methodenaufrufe (z. B. Tomcat 7).
Ich habe meine Antwort basierend auf Jorns Antwort aktualisiert. Hut ab vor ihm.
Wie würden Sie mehrere Saiten machen? Es muss einen besseren Weg geben als <c:if test = "${ansokanInfo.PSystem == 'NAT' || ansokanInfo.PSystem == 'CAT'}">
– Dillon
2. Dezember 2015 um 21:04 Uhr
Phani
<c:if test="${ansokanInfo.pSystem eq 'NAT'}">
Jörg Horstmann
Ich denke, die anderen Antworten vermissen ein wichtiges Detail in Bezug auf den im EL-Ausdruck zu verwendenden Eigenschaftsnamen. Die Regeln für die Umwandlung von Methodennamen in Eigenschaftsnamen sind in angegeben ‘Introspector.decpitalize’ was Teil des Java-Bean-Standards ist:
Dies bedeutet normalerweise, das erste Zeichen von Großbuchstaben in Kleinbuchstaben umzuwandeln, aber in dem (ungewöhnlichen) Sonderfall, wenn es mehr als ein Zeichen gibt und sowohl das erste als auch das zweite Zeichen Großbuchstaben sind, lassen wir es in Ruhe.
So wird aus „FooBah“ „fooBah“ und aus „X“ wird „x“, aber „URL“ bleibt „URL“.
In Ihrem Fall sollte der JSTL-Code also wie folgt aussehen, beachten Sie das große „P“:
<c:if test = "${ansokanInfo.PSystem == 'NAT'}">
Getter und Setter mit einer Namenskonvention sind so ziemlich die Definition einer Java-Bean. Ich denke, wir brauchen noch mehr Informationen darüber, wo die Variable an die JSP übergeben wird. Um für EL verfügbar zu sein, muss es in einem bestimmten Umfang vorhanden sein, beispielsweise als Request- oder PageContext-Attribut. Eine von einem Skriptblock erstellte lokale Variable wäre für EL nicht verfügbar.
– Jörn Horstmann
18. April 2012 um 8:45 Uhr
JohanB
Sie können Skriptlets verwenden, dies ist jedoch nicht der richtige Weg. Heutzutage gelten Inline-Scriptlets oder JAVA-Code in Ihren JSP-Dateien als schlechte Angewohnheit.
Sie sollten sich etwas mehr über JSTL informieren. Wenn sich das ansokanInfo-Objekt in Ihrem Anfrage- oder Sitzungsbereich befindet, können Sie das Objekt (toString()-Methode) wie folgt drucken: ${ansokanInfo} kann Ihnen einige Basisinformationen liefern. ${ansokanInfo.pSystem} sollte die Objekt-Getter-Methode aufrufen. Wenn das alles funktioniert, können Sie dies verwenden:
Können Sie das bitte näher erläutern
getPSystem()
undansokanInfo
? legen Sie sie in der Anfrage fest oder greifen Sie auf sie zuimport
?– Santhosh
29. Oktober 2014 um 5:32 Uhr
IIRC Ich habe sie in der Anfrage gesetzt und die Lösung (Workaround) bestand darin, Websphere zu aktualisieren, wie von BalusC angegeben, und dann kann eine neuere Version Bean-Methoden durch Tags aufrufen. Ich habe in der Frage Standard-Websphere und eine Version verwendet, bevor jsp und jstl Methoden ausführen konnten. Bitte finden Sie meine andere Frage, in der BalusC uns mitteilt, dass ich eine Websphere-Version verwendet habe, die eine neuere Version benötigte, um die Methoden aufrufen zu können.
– Niklas Rosenkranz
29. Oktober 2014 um 10:10 Uhr
Haben Sie Ihren App-Server jetzt auf 8 aktualisiert? und schlägt diese Lösung fehl?
– Santhosh
29. Oktober 2014 um 10:18 Uhr
@SanKrish Ich verwende JSP jetzt nicht. Ich hoffe, es funktioniert für Sie und wurde für neuere Versionen des App-Servers aktualisiert.
– Niklas Rosenkranz
23. Februar 2015 um 8:03 Uhr