0

我试图在带有 struts2 标签的嵌套迭代器中循环一次。这是我到目前为止所拥有的:

爪哇:

private List<Parent> allParent = new ArrayList<Parent>();
private List<Children> allChildren = new ArrayList<Children>();

JSP:

<s:iterator value="allParent">
  Parent name: <s:property value="parentName"/>
  <s:iterator value="allChildren">
       First child: <s:property value="childName"/>
  </s:iterator>
</s:iterator>

如果我将 2 个迭代器分开,那么所有项目都会完美列出。如果我嵌套它们,那么孩子们都不会出现。在我让孩子们表演之后,我想限制他们,所以只有一个表演。

4

2 回答 2

0

此代码不起作用,因为 jsp 认为allParent存在一个调用的 getter,而不是在您的操作类中getAllChildren的列表下进行迭代。allChildren

可能的解决方案

在一张地图中加入两个列表Map<Parent, List<Children>> map。然后,在 jsp 页面中遍历 map 和 map 的每个值。

<s:iterator value="map">
     Parent name: <s:property value="key"/>
     <s:iterator value="value">
         First child: <s:property />
     </s:iterator>
</s:iterator>
于 2012-07-02T18:58:19.860 回答
0

试试这个:

<s:iterator value="allParent" var="parent">
  Parent name: <s:property value="#parent.parentName"/>
  <s:iterator value="allChildren" var="child">
       First child: <s:property value="#child.childName"/>
  </s:iterator>
</s:iterator>

更新

如果您只想显示其中一个孩子,请考虑s:subset

<s:iterator value="allParent" var="parent">
  Parent name: <s:property value="#parent.parentName"/>
  <s:subset source="allChildren" count="what_ever_u_like">
  <s:iterator>
    <s:property />
  </s:iterator>
  </s:subset>
</s:iterator>
于 2012-07-02T19:09:19.520 回答