struts2 содержит тест в теге итератора - PullRequest
2 голосов
/ 21 октября 2011

Это мой код в 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 показывают 0,1,2,3,4,5 для sourcesCheck, однако, тест всегда ложен.Зачем?Я пытался как с int и String значениями для sourcesCheck.Как содержится работа?Если index не является String или int, что это?

Ответы [ 3 ]

5 голосов
/ 21 октября 2011

Используйте этот код:

        <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>
2 голосов
/ 21 октября 2011

Массив не имеет методов для реализации. Рассмотрим 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>
0 голосов
/ 21 октября 2011

Я думаю, что это должно быть следующим образом

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

, потому что вы хотите проверить значение, а не переменную.

...