struts2 在迭代器标签中包含测试

发布于 2024-12-11 07:08:54 字数 529 浏览 0 评论 0原文

这是我在 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,但是,测试总是错误的。为什么?我尝试过使用 int 和 String 值来进行sourceCheck。包含如何工作?如果索引不是 String 或 int,那么它是什么?

This is my code in 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 is an array I pass from my action populated with values 0,1,2,3,4,5. The results on my jsp show 0,1,2,3,4,5 for sourcesCheck, however, the test is always false. Why? I have tried with both int and String values for sourcesCheck. How does contains work? If index is not a String or int, what is it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

长途伴 2024-12-18 07:08:54

使用此代码:

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

Use this code:

        <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>
晌融 2024-12-18 07:08:54

数组没有任何方法可以实现。考虑 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>

Array doesn't have any methods to implement. Consider the java.util.List.

For example :

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

Compare by java.util.List.contains(Integer)

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

</s:if>
等待我真够勒 2024-12-18 07:08:54

我认为它必须如下,

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

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

I think it must be as follow

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

because you want to check a value not a variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文