Struts2在迭代器标签中包含test



这是我在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和字符串值。contains是如何工作的?如果index不是String或int类型,它是什么?

使用以下代码:

        <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>

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>

我想应该是这样的

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

因为你想检查一个值而不是一个变量

最新更新