在我工作的项目中,有.tag文件,
<%@ attribute name="stepNumber" required="true" description="step number"%>
<c:if test="${stepNumber != 4}">
<div> Some text </div>
</c:if>
即使stepNumber为c:if
到4,上述eq
条件也会生效。
为什么?
如果我将代码更改为&amp;当我在申请的第4步
<c:if test="${stepNumber == 5}">
<div> Some text </div>
</c:if>
或
<c:if test="${stepNumber} != '4'">
<div> Some text </div>
</c:if>
它按预期工作。为什么不选择!=
?
答案 0 :(得分:0)
如果没有为属性显式指定类型,则默认为java.lang.String。
<%@ attribute name="stepNumber" required="true" description="step number"%>
因此使用
<x:MyTag stepNumber="4" />
将导致stepNumber
成为字符串。
在这里,您正在针对int测试字符串,因此这将始终为false。
<c:if test="${stepNumber != 4}">
对于字符串比较,请使用:
<c:if test="${stepNumber} != '4'">
如果使用数字,则可以明确指定类型:
<%@ attribute name="stepNumber" required="true" description="step number" type="java.lang.Integer" %>
<c:if test="${stepNumber != 4}">