<s:iterator value="categorys" id="c">
<s:if test="-1 == <s:property value='#c.pId'/>"> 
1
</s:if>
<s:else> 
2
</s:else>
</s:iterator>
当<s:property value=“#c.pId”/>值为1时,表达式还是false,为何struts2s:iterators:ifs:else<s:propety>

解决方案 »

  1.   

    写错了,有值是1的,也是false
      

  2.   

    <s:if test="%{false}"> 
    <div>***********</div>
    </s:if><s:elseif test="%{true}">
    <div>!!!!!!!!!!!</div>
    </s:elseif>
      

  3.   

    已经在struts2标签中就不用在用<s:property value="#c.pId"/>
    直接写成这样
    s:iterator value="categorys" id="c">
    <s:if test="1 == #c.pId"> 
    1
    </s:if>
    <s:else> 
    2
    </s:else>
    </s:iterator>
      

  4.   

    +1
    如果你是在循环里 
    一般要加上# <s:if test="1 == #c.pId"> 
    如果就只是一个对象或者单独的一个值 就不用#号了
      

  5.   

    sorry没测试,你可以打开火狐的debug测试一下,看看比较那段表达式的结果。
      

  6.   


    如果c.pId类型是数字 #4楼可以满足  如果是字符串需要改下
    <s:iterator value="categorys" id="c">
    <s:if test='c.pId.equals("-1")'> 
    1
    </s:if>
    </s:iterator>
      

  7.   


    <s:iterator value="categorys" id="c">
    <s:if test='#c.pId.equals("-1")'> 
    1
    </s:if>
    </s:iterator>