【问题标题】:Iterate two Lists in struts2在struts2中迭代两个List
【发布时间】:2013-12-23 17:39:01
【问题描述】:

我有两个列表,selectedFields 包含标题(例如:id、username、firstname)和 custDetails,其中包含客户详细信息(例如:id、username、@ 987654328@,birthdate,address 等)。我在这里要做的是只打印来自<td> 中的<td> 中的数据,这些数据包含在selectedFields 中。如果selectedFields 包含用户名,那么只有用户名值将显示为<td>John</td>,标题将类似于@987654335 @。

<table>
<thead>
  <!-- Selected Fields contains id,username -->
  <s:iterator value="selectedFields">                                           
  <th><s:property/></th>
  </s:iterator>
</thead>
<tbody>
  <!-- custDetails contains id,username,firstname,lastname,address,city,state etc. -->
  <s:iterator value="custDetails" status="custDetails">
    <tr>
    <s:iterator value="selectedFields" status="selectedFields">
    <!-- Display only id,username columns from custDetails since selectedFields contains these values -->  
    <td><s:property value="<s:property />"/></td>
    </s:iterator>
    </tr>
  </s:iterator>                               
</tbody>
</table>

【问题讨论】:

  • 构建你想要在Java端显示的内容;保持视图层简单。
  • @DaveNewton 可以这样做吗?
  • 迭代器太多,你迭代什么?
  • 我想迭代 custDetails(id,username,firstname,lastname,birthdate,address,city,state,country) 包含 3 条记录但只显示包含在 selectedFields(id,username) 中的列. custDetails: List selectedFields: List
  • 当然可以,但是很难阅读、维护和测试。

标签: java jakarta-ee struts2 iterator nested-loops


【解决方案1】:

您可以使用if 和else 标签来选择要显示的列。除非您不想迭代对象属性。

<s:iterator var="sf" value="selectedFields">
  <!-- Display only id,username columns from custDetails since selectedFields contains these values --> 
  <s:if test="#sf == 'id'"> 
   <td><s:property value="id"/></td>
  </s:if>
  <s:else>
  <s:if test="#sf == 'username'"> 
   <td><s:property value="username"/></td>
  </s:if>
  </s:else>
</s:iterator>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    相关资源
    最近更新 更多