struts2包含iterator标记中的test

时间:2011-10-21 07:07:13

标签: java struts2 iterator contains

这是我在jsp中的代码:

<s:iterator value="sources" status="sourceStatus">
  <s:property value="sourcesCheck"/>
  <s:property value="#sourceStatus.index"/>
  <s:if test="%{sourcesCheck.contains(#sourceStatus.index)}">
    true
  </s:if>
  <s:else>
    false
  </s:else>
</s:iterator>

sourcesCheck是我从我的操作传递的数组,其中填充了值0,1,2,3,4,5。我的jsp上的结果显示了来自sourcesCheck的0,1,2,3,4,5,但是,测试总是错误的。为什么?我已尝试使用sourcesCheck的int和String值。如何包含工作?如果index不是String或int,它是什么?

3 个答案:

答案 0 :(得分:5)

使用此代码:

        <s:iterator value="sources" status="sourceStatus">
            <s:property value="sourcesCheck"/>
            <s:property value="#sourceStatus.index"/>
            <s:if test="%{#sourceStatus.index in sourcesCheck}">
                true
            </s:if>
            <s:else>
                false
            </s:else>
        </s:iterator>

答案 1 :(得分:2)

Array没有任何方法可以实现。考虑java.util.List

例如

List<Integer> sourcesCheck = Arrays.asList(0, 1, 2, 3, 4, 5);

java.util.List.contains(Integer)

进行比较
<s:if test="sourcesCheck.contains(#sourceStatus.index)">

</s:if>

答案 2 :(得分:0)

我认为必须如下

<s:if test="%{sourcesCheck.contains('#sourceStatus.index')}">

因为您要检查值而不是变量。