今天碰到一個(gè)很有意思的問(wèn)題,就是需要用Struts 2的iterator標(biāo)簽來(lái)遍歷一個(gè)含有雙層List的嵌套。
首先我們從最基礎(chǔ)的說(shuō)起,用iterator標(biāo)簽遍歷一個(gè)List。
如果Action中有一個(gè)這樣的不為null的屬性:
[java] view plain copy PRint?private List<T> list;
private List<T> list; 那么在jsp中,就可以這樣來(lái)遍歷list:
[xhtml] view plain copy print?<s:iterator value=“l(fā)ist”> <s:property value=“propertyNameOfObjectInList”></s:property> </s:iterator>
<s:iterator value=”list”> <s:property value=”propertyNameOfObjectInList”></s:property> </s:iterator> 其中的propertyNameOfObjectInList是指list中對(duì)象的屬性名。
下面我們?cè)賮?lái)看稍微復(fù)雜一點(diǎn)的情況,那就是嵌套使用iterator標(biāo)簽。
假設(shè)我們的Action中有如下屬性:
[java] view plain copy print?private List<T> list1; private List<T> list2;
private List<T> list1;private List<T> list2; 那么,我們可以在JSP頁(yè)面上這樣來(lái)遍歷:
[xhtml] view plain copy print?<s:iterator value=“l(fā)ist1”> <s:property value=“propertyNameOfObjectInList”></s:property> <s:iterator value=“l(fā)ist2” id=“inner”> <s:property value=“#inner.propertyNameOfObjectInList”></s:property> </s:iterator> </s:iterator>
<s:iterator value=”list1”> <s:property value=”propertyNameOfObjectInList”></s:property> <s:iterator value=”list2” id=”inner”> <s:property value=”#inner.propertyNameOfObjectInList”></s:property> </s:iterator></s:iterator> 請(qǐng)注意,我們必須給里層的iterator標(biāo)簽加上一個(gè)id屬性,這樣,才能通過(guò)#id.propertyNameOfObjectInList來(lái)取得我們需要的值。
下面是遍歷雙層List的情況。
假設(shè)Action中有如下屬性:
[java] view plain copy print?private List<List<T>> list;
private List<List<T>> list; 那么,我們?cè)贘SP必須這樣來(lái)遍歷:
[xhtml] view plain copy print?<s:iterator value=“l(fā)ist”> <s:iterator value=“top” id=“inner”> <s:property value=“#inner.propertyNameOfObjectInList”></s:property> </s:iterator> </s:iterator>
<s:iterator value=”list”> <s:iterator value=”top” id=”inner”> <s:property value=”#inner.propertyNameOfObjectInList”></s:property> </s:iterator></s:iterator> 這種情況下,必須把內(nèi)層的iterator標(biāo)簽的value屬性設(shè)定為”top”!這個(gè)top就代表?xiàng)m敗H缓笤僦付╥d屬性,并用”#”作為前綴來(lái)取值。
我今天碰到的情況是這樣,在Action中:
[java] view plain copy print?private List<T> list1; private List<List<T>> list2;
private List<T> list1;private List<List<T>> list2; 所以當(dāng)然就要這樣遍歷了:
[xhtml] view plain copy print?<s:iterator value=“l(fā)ist1”> <s:property value=“propertyNameOfObjectInList”></s:property> <s:iterator value=“l(fā)ist2”> <s:iterator value=“top” id=“inner”> <s:property value=“#inner.propertyNameOfObjectInList”></s:property> </s:iterator> </s:iterator> </s:iterator>
<s:iterator value=”list1”> <s:property value=”propertyNameOfObjectInList”></s:property> <s:iterator value=”list2”> <s:iterator value=”top” id=”inner”> <s:property value=”#inner.propertyNameOfObjectInList”></s:property> </s:iterator> </s:iterator></s:iterator> 本文鏈接地址: http://www.psjay.com/Java-ee-struts-2-iterator-tag.html
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注