使用 JSTL 标记将布尔值设置为变量?
我正在使用JSTL标签。我有下面的代码。
<c:set var="refreshSent" value="false"/>
现在变量刷新发送有布尔值还是字符串?
谢谢!
我正在使用JSTL标签。我有下面的代码。
<c:set var="refreshSent" value="false"/>
现在变量刷新发送有布尔值还是字符串?
谢谢!
它将是一个布尔值。您可以通过比较
<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
但是,如果在期望为 a 的 EL 表达式中使用该变量,则它将通过调用 (根据 JSP 规范) 转换为 a。refreshSent
boolean
boolean
Boolean.valueOf(String)
因此,如果您使用:
<c:if test="${refreshSent}">
属性的值将设置为布尔值。表达式产生 一个 ,但是由于该属性需要 一个 ,因此会调用 。test
false
${refreshSent}
String
test
boolean
Boolean.valueOf("false")