JSTL-if-Tag für gleiche Zeichenfolgen

Lesezeit: 3 Minuten

Benutzer-Avatar
Niklas Rosenkranz

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

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

    – Adam Gent

    17. April 2012 um 11:57 Uhr

  • Ich habe JSP(X) aufgegeben. Ich verwende entweder Moustache (github.com/samskivert/jmustache) oder meine eigene Vorlagensprache JATL (code.google.com/p/jatl).

    – Adam Gent

    18. April 2012 um 12:12 Uhr

  • 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

Benutzer-Avatar
Phani

<c:if test="${ansokanInfo.pSystem eq 'NAT'}">

Benutzer-Avatar
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

Benutzer-Avatar
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:

<c:if test="${ ansokanInfo.pSystem  == 'NAT'}"> tataa </c:if>

1264970cookie-checkJSTL-if-Tag für gleiche Zeichenfolgen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy