使用JSTL标记将布尔值设置为变量?

时间:2012-09-20 12:27:57

标签: java jsp jstl

我正在使用JSTL标签。我有以下代码。

<c:set var="refreshSent" value="false"/>

现在变量 refreshSent 具有布尔值或字符串?

谢谢!

5 个答案:

答案 0 :(得分:26)

这将是一个布尔值。您可以通过比较

来检查它
<c:if test="${refreshSent eq false}">

<c:if test="${refreshSent eq 'false'}">

第二个是字符串比较。

答案 1 :(得分:5)

我将它用于布尔值

<c:set var="refreshSent" value="${false}"/>
<c:if test="${refreshSent}">
    some code ........
</c:if>

答案 2 :(得分:3)

<c:set var="refreshSent" value="false"/>

如果value中的表达式评估为String;那么var refreshSent的值是String类型。

请参阅http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/以供参考。

在幕后进行自动类型转换。

请参阅http://today.java.net/pub/a/today/2003/10/07/jstl1.html

答案 3 :(得分:2)

它是String

以下JSP代码:

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

在浏览器中输出以下内容:

false : class java.lang.String
false : class java.lang.Boolean
false : class java.lang.String

但是,如果您在期望refreshSent的EL表达式中使用boolean变量,则通过调用boolean将它转换为Boolean.valueOf(String)(根据到JSP Specification)。

因此,如果您使用:

<c:if test="${refreshSent}">

test属性的值将被设置为布尔值false${refreshSent}表达式产生一个String,但是由于test属性期望一个boolean,因此对`Boolean.valueOf(“ false”)进行了调用。

答案 4 :(得分:1)

是的,它可以是boolean和String。

<c:if test="${refreshSent}">
    your code...
</c:if>

或者您可以像这样使用

<c:if test="${refreshSent eq 'false'}">
    your code...
</c:if>

感谢。