繁体   English   中英

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

[英]set boolean value into variable using JSTL tags?

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

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

现在变量refreshSent有布尔值还是字符串?

谢谢!

它将是一个布尔值。 您可以通过比较来检查它

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

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

第二个是字符串比较。

它是一个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

但是,如果您在需要boolean的 EL 表达式中使用refreshSent变量,它将通过调用Boolean.valueOf(String)将其转换为boolean (根据JSP 规范)。

所以如果你使用:

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

test属性的值将设置为布尔false值。 ${refreshSent}表达式产生一个String ,但由于test属性需要一个boolean ,所以调用了Boolean.valueOf("false")

我用它来表示布尔值

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

是的,它可以是布尔值和字符串。

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

或者你可以这样使用

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

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM