J'utilise les tags JSTL. J'ai ci-dessous le code.
<c:set var="refreshSent" value="false"/>
Maintenant, variable refreshSent a une valeur booléenne ou une chaîne?
Merci!
Ça va être un booléen. Vous pouvez le vérifier en comparant dans un
<c:if test="${refreshSent eq false}">
et
<c:if test="${refreshSent eq 'false'}">
La seconde est une comparaison de chaîne.
Je l'utilise pour boolean
<c:set var="refreshSent" value="${false}"/>
<c:if test="${refreshSent}">
some code ........
</c:if>
<c:set var="refreshSent" value="false"/>
Si l'expression dans value
est évaluée à String
; alors la valeur de var refreshSent
est de type String
.
Voir http://docs.Oracle.com/javaee/5/jstl/1.1/docs/tlddocs/ pour référence.
Il y a une conversion de type automatique en coulisse.
Voir http://today.Java.net/pub/a/today/2003/10/07/jstl1.html
C'est une String
.
Le code JSP suivant:
<c:set var="refreshSent" value="false" />
<c:set var="refreshSent2" value="${false}" />
<c:set var="refreshSent3" value="${'false'}" />
<div>
<div>${refreshSent} : ${refreshSent.class}</div>
<div>${refreshSent2} : ${refreshSent2.class}</div>
<div>${refreshSent3} : ${refreshSent3.class}</div>
</div>
Affiche les éléments suivants dans un navigateur:
false : class Java.lang.String
false : class Java.lang.Boolean
false : class Java.lang.String
Mais si vous utilisez la variable refreshSent
dans une expression EL où une boolean
est attendue, elle sera convertie en une boolean
par un appel à Boolean.valueOf(String)
(selon la Spécification JSP ).
Donc si vous utilisez:
<c:if test="${refreshSent}">
la valeur de l'attribut test
sera définie sur une valeur booléenne false
. L'expression ${refreshSent}
donne String
, mais comme l'attribut test
s'attend à boolean
, un appel à `Boolean.valueOf (" false ") est effectué.
Ouais, ça peut être booléen et String.
<c:if test="${refreshSent}">
your code...
</c:if>
ou vous pouvez utiliser comme ça
<c:if test="${refreshSent eq 'false'}">
your code...
</c:if>
Merci.