检查struts 2的<s:iterator>标记中的arraylist中的stat.count值</s:iterator>

时间:2012-12-28 05:56:35

标签: jsp struts2

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

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

4 个答案:

答案 0 :(得分:4)

您是否尝试过索引和计数属性?以下是显示示例的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

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

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

  

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中元素的INDEXES(而不是值),

  

completeArrayList:{“a”,“b”,“c”,“d”,“e”,“f”}

     

selectedIndexes:{2,3}

你可以get他们这样:

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