web-dev-qa-db-fra.com

JSTL si tag pour chaînes égales

J'ai une variable d'un objet sur ma page JSP:

<%= ansokanInfo.getPSystem() %>

La valeur de la variable est NAT, ce qui est correct et je souhaite appliquer certains éléments de page à cette valeur. Comment utiliser un tag pour connaître le cas? J'ai essayé quelque chose comme

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

Mais ce qui précède n'affiche rien. Comment devrais-je le faire? Ou puis-je tout aussi bien utiliser des scriptlets i.e.

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

Merci pour toute réponse ou commentaire.

83
Niklas Rosencrantz

Essayer:

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

JSP/Servlet 2.4 (je pense que c'est le numéro de version) ne prend pas en charge les appels de méthode dans EL et ne prend en charge que les propriétés. Les derniers conteneurs de servlets prennent en charge les appels de méthodes (par exemple, Tomcat 7).

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

Je pense que les autres réponses manquent un détail important concernant le nom de propriété à utiliser dans l'expression EL. Les règles de conversion des noms de méthodes en noms de propriétés sont spécifiées dans 'Introspector.decpitalize` , qui fait partie du standard de bean Java:

Cela signifie normalement convertir le premier caractère majuscule en minuscule, mais dans le cas spécial (inhabituel) où il y a plus d'un caractère et où le premier et le second caractères sont en majuscule, nous laissons cela seul.

Ainsi, "FooBah" devient "fooBah" et "X" devient "x", mais "URL" reste en tant que "URL".

Donc, dans votre cas, le code JSTL devrait ressembler à ceci, notez le "P" majuscule:

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

Vous pouvez utiliser des scriptlets, cependant, ce n'est pas la voie à suivre. Les grilles d’alignement ou le code Java dans vos fichiers JSP d’aujourd’hui sont considérés comme une mauvaise habitude.

Vous devriez lire un peu plus sur JSTL. Si l'objet ansokanInfo se trouve dans l'étendue de votre demande ou de votre session, son impression (méthode toString ()) ainsi: $ {ansokanInfo} peuvent vous donner des informations de base. $ {ansokanInfo.pSystem} devrait appeler la méthode getter d'objet. Si tout cela fonctionne, vous pouvez utiliser ceci:

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