2012-07-02 240 views
0

我想循環一次內嵌嵌套迭代器與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個迭代器,那麼所有的項目是完全上市。如果我將它們嵌套在一起,那麼沒有一個孩子表現出來在讓孩子們表演之後,我想限制他們,讓他們表演。

回答

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> 

UPDATE

如果你只是想顯示孩子之一,想想S:集

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

,但是如何在迭代一次後停止? – ThreaT

+0

嗨@ThreaT,你只是想要一個孩子展示? – Jaiwo99

+0

完美的作品!非常感謝 :) – ThreaT

0

此代碼不起作用,因爲jsp認爲在allParent中存在一個名爲getAllChildren的獲取器,而不是在動作類中的列表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> 
+0

我m無法將列表連接到業務邏輯集成器的映射中理由 – ThreaT