wake-up-neo.com

JSTL if-Tag für gleiche Zeichenfolgen

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 kennen? Ich habe so etwas versucht

<c:if test = "${ansokanInfo.getPSystem() == 'NAT'}">      
   process  
</c:if> 

Aber das obige zeigt nichts an. Wie soll ich das machen Oder kann ich genauso gut Scriptlets verwenden, d.h.

<% if (ansokanInfo.getPSystem().equals("NAT"){ %>
process
<% } %>

Vielen Dank für jede Antwort oder Kommentar.

83

Versuchen:

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

JSP/Servlet 2.4 (ich denke das ist die Versionsnummer) unterstützt keine Methodenaufrufe in EL und nur Eigenschaften. Die neuesten Servlet-Container unterstützen Methodenaufrufe (z. B. Tomcat 7).

140
Adam Gent
<c:if test="${ansokanInfo.pSystem eq 'NAT'}">
34
Phani

Ich denke, bei den anderen Antworten fehlt ein wichtiges Detail in Bezug auf den Eigenschaftsnamen, der im EL-Ausdruck verwendet werden soll. Die Regeln für die Konvertierung von Methodennamen in Eigenschaftsnamen sind in "Introspector.decpitalize" festgelegt, das Teil des Bean-Standards Java=) ist:

Dies bedeutet normalerweise, dass das erste Zeichen von Groß- in Kleinbuchstaben konvertiert wird. In dem (ungewöhnlichen) Sonderfall, in dem 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 "FooBah" zu "fooBah" und "X" wird zu "x", "URL" bleibt jedoch "URL".

In Ihrem Fall sollte der JSTL-Code also wie folgt aussehen: Beachten Sie das Großbuchstaben 'P':

<c:if test = "${ansokanInfo.PSystem == 'NAT'}">
16
Jörn Horstmann

Sie können Scriptlets verwenden, dies ist jedoch nicht der richtige Weg. Heutzutage werden Inline-Scriplets oder Java - Code in Ihren JSP-Dateien als schlechte Angewohnheit angesehen.

Sie sollten sich ein bisschen mehr über JSTL informieren. Wenn sich das ansokanInfo-Objekt in Ihrem Anforderungs- oder Sitzungsbereich befindet, können Sie das Objekt (toString () -Methode) folgendermaßen drucken: $ {ansokanInfo} kann Ihnen einige Basisinformationen geben. $ {ansokanInfo.pSystem} sollte die Objekt-Getter-Methode aufrufen. Wenn dies alles funktioniert, können Sie dies verwenden:

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