我正在使用JSTL标签。我有以下代码。
<c:set var="refreshSent" value="false"/>
现在变量 refreshSent 具有布尔值或字符串?
谢谢!
答案 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/以供参考。
在幕后进行自动类型转换。
答案 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>
感谢。