Vérification de la demande de valeur de paramètre dans Struts2 tag
J'ai le code suivant dans ma page jsp:
<s:property value="#parameters['test']"/>
<br/><s:property value="'1'.equals(#parameters['test'])"/>
maintenant, si je accéder à cette action comme ceci:
test.d'action?test=1
Je reçois le texte suivant:
1
false
Vous demandez-vous, pourquoi 1 n'est pas égal à 1?
OriginalL'auteur eumust | 2010-12-30
Vous devez vous connecter pour publier un commentaire.
Modifier:
Il y a une différence entre
""
(guillemets doubles) et''
(simple quotes) dans OGNL.Guillemets évaluer les caractères uniques à cordes pendant que les guillemets simples évaluer les caractères uniques de types de Caractères. Vous pouvez mettre plusieurs caractères entre guillemets simples et elle sera évaluée comme une chaîne de caractères.
Demande ultérieure de la portée n'est pas
mais
comme on peut le voir ci-dessous au cours des 5 dernières lignes de la page jsp.
JSP
Test.jsp (Action)
paquet struts2;
import com.opensymphony.xwork2.ActionSupport;
Et bien non, parce que == est intégré dans les types de. Les chaînes ne peuvent pas être comparés de cette façon. Si #de paramètres['test'] prend la valeur "bonjour" <s:property value="'bonjour'.equals(#paramètres['test'])"/> fonctionne. Si #de paramètres['test'] renvoie un entier, <s:property value="'1'.equals(#paramètres['test'].toString())"/> fonctionne.
juste testé: <s:property value="'bonjour'.equals(#paramètres['test'])"/> produit de faux sur le test.d'action?test=bonjour
Mon mauvais, voir mon édité réponse.
Utile et complète réponse, merci beaucoup!
OriginalL'auteur Quaternion
J'ai juste trouvé que #les paramètres de['test'] retourne un tableau de String. Donc quand vous dites que
vous sont effectivement la comparaison d'une chaîne de caractères '1' avec un tableau {'1'} d'où elle retourne false. C'est peut-être parce qu'il y a deux paramètres avec le même nom
la chose correcte à faire serait
OriginalL'auteur Amit Khanna