Struts2循环一次在嵌套迭代器中

时间:2012-07-02 14:17:22

标签: java jsp struts2

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

JAVA:

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个迭代器分开,那么所有项目都会被完美列出。如果我筑巢,那么没有孩子表现出来。在我让孩子们表演之后,我想限制他们只有一个节目。

2 个答案:

答案 0 :(得分:0)

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

可能的解决方案

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

<s:iterator value="map">
     Parent name: <s:property value="key"/>
     <s:iterator value="value">
         First child: <s:property />
     </s:iterator>
</s:iterator>

答案 1 :(得分: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>