web-dev-qa-db-fra.com

définir une valeur booléenne dans une variable à l'aide de balises JSTL?

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!

33
user1016403

Ç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.

27
Chris

Je l'utilise pour boolean

<c:set var="refreshSent" value="${false}"/>
<c:if test="${refreshSent}">
    some code ........
</c:if>
5
Steklorez
<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

3
Zaki

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é.

1
John S

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.

1
mazipan