【问题标题】:Check stat.count value in arraylist in <s:iterator> tag for struts 2检查 <s:iterator> 标记中 arraylist 中的 stat.count 值以获取 struts 2
【发布时间】:2012-12-28 05:56:34
【问题描述】:
<% System.out.println("These indexed shall be shown on gui "+(ArrayList)request.getSession().getAttribute("selectedIndexes")); %>   // ArrayList value can be 2,3,5,9

  <s:iterator var="itr" value="#session.completeArrayList" status="stat">
 <s:if > //if stat.count value present in arraylist(selectedIndexes), then go to if loop
 </s:if

</s:iterator>

我不知道如何在&lt;s:if&gt; 循环中检查arraylist{selectedIndexes} 中的%{#stat.count} 值。 我该怎么做呢

【问题讨论】:

  • 你想达到什么目的?也许甚至不需要遍历数组。

标签: jsp struts2


【解决方案1】:

您是否尝试过 index 和 count 属性。这是显示示例的link

  <s:iterator status="status" value='%{0, 1}'>
      Index: <s:property value="%{#status.index}" /> <br />
      Count: <s:property value="%{#status.count}" /> <br />  
   </s:iterator>

将打印

索引:0 计数:1 指数:1 计数:2

【讨论】:

  • 我已经检查过了,但是我不知道如何在 Arraylist 中检查这个计数(存储在会话中),基本上我正在寻找包含在 循环中的 arraylist 方法
【解决方案2】:

Struts2 使用OGNL 并且它有in 运算符。所以你可以像这样轻松地检查它:

<s:iterator var="itr" value="#session.completeArrayList" status="stat">
  <s:if test="#stat.count in #session.selectedIndexes">
  </s:if
</s:iterator>

【讨论】:

    【解决方案3】:
    <s:iterator var="itr" value="#session.completeArrayList" status="stat">
      <s:iterator var="ind" value="#session.selectedIndexes">
        <s:if test="#stat.count == #ind">
          I found #stat.count in selectedIndexes ArrayList
        </s:if>
      </s:iterator>
    </s:iterator>
    

    【讨论】:

    • 这没问题...如果 completeArrayList 的大小是 m 并且 selectedIndexes 的大小是 n,那么 的总迭代是 m*n .....struts 2 是否提供 sth比如 if(selectedIndexes.contains #stat.count)?
    【解决方案4】:

    如果您已经有一个包含所有元素的列表,以及一个包含选定元素的子列表,您可以使用 Map:

    <s:iterator var="currentElement" value="#session.selectedIndexes" >
       <s:property value="#session.completeHashMap[#currentElement]" />
    </s:iterator>
    

    使用列表,我不清楚您想要实现什么。如果您想为子列表中的每个元素(以及它存储值而不是索引的子列表)输入&lt;s:if/&gt;,例如

    completeArrayList : {"a","b","c","d","e","f"}

    selectedIndexes : {"c","d"}

    那么你可以像这样使用contains

    <s:iterator var="currentElement" value="#session.selectedIndexes" >
       <s:if test="%{#session.completeArrayList.contains(#currentElement)}">
          Selected Index with value 
          <s:property value="#currentElement" /> 
          found on bigList
       </s:if>
    </s:iterator>
    

    如果 selectedIndexes 是存储 ArrayList 中元素的索引(而不是值),

    completeArrayList : {"a","b","c","d","e","f"}

    选定索引:{2,3}

    你可以像这样get他们:

    <s:iterator var="currentElement" value="#session.selectedIndexes" >
       <s:property value="#session.completeArrayList[#currentElement]" />
    </s:iterator>
    

    【讨论】:

      猜你喜欢
      • 2014-06-15
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2011-07-08
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多