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