!=在.tag文件中没有按预期工作

时间:2016-04-29 11:50:23

标签: jsp el jsp-tags

在我工作的项目中,有.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>

它按预期工作。为什么不选择!=

1 个答案:

答案 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}">