<logic:iterate>標(biāo)記用于在頁(yè)面中創(chuàng)建一個(gè)循環(huán),以此來(lái)遍歷如數(shù)組、Collection、Map這樣的對(duì)象。該標(biāo)記的功能強(qiáng)大,在Struts應(yīng)用的頁(yè)面中經(jīng)常使用到。
1、對(duì)數(shù)組進(jìn)行循環(huán)遍歷
使用<logic:iterate>標(biāo)記可以用于遍歷數(shù)組,以下是一段示例代碼:
<%
String[] testArray={"str1","str2","str3"};
pageContext.setAttribute("test",testArray);
%>
<logic:iterate id="show" name="test">
<bean:write name="show"/>
</logic:iterate>
在上面的代碼中,首先定義了一個(gè)字符串?dāng)?shù)組,并為其初始化。接著,將該數(shù)組存入pageContext對(duì)象中,命名為test1。然后使用<logic:iterate>標(biāo)記的name屬性指定了該數(shù)組,并使用id來(lái)引用它,同時(shí)使用<bean:write>標(biāo)記來(lái)將其顯示出來(lái)。其結(jié)果為:
str1
str2
str3
另外,還可以通過(guò)length屬性來(lái)指定輸出元素的個(gè)數(shù)。如下面的代碼:
<logic:iterate id="show" name="test" length="2" offset="1">
<bean:write name="show"/>
</logic:iterate>
其中l(wèi)ength屬性指定了輸出元素的個(gè)數(shù),offset屬性指定了從第幾個(gè)元素開(kāi)始輸出,如此處為1,則表示從第二個(gè)元素開(kāi)始輸出。所以該代碼的運(yùn)行結(jié)果應(yīng)當(dāng)輸出:
str2
str3
另外,該標(biāo)記還有一個(gè)indexId屬性,它指定一個(gè)變量存放當(dāng)前集合中正被訪問(wèn)的元素的序號(hào),如:
<logic:iterate id="show" name="test" length="2" offset="1" indexId="number">
<bean:write name="number"/>:<bean:write name="show"/>
</logic:iterate>
其顯示結(jié)果為:
1:str2
2:str3
2、對(duì)HashMap進(jìn)行循環(huán)遍歷
<%
HashMap countries=new HashMap();
countries.put("country1","中國(guó)");
countries.put("country2","美國(guó)");
countries.put("country3","英國(guó)");
countries.put("country4","法國(guó)");
countries.put("country5","德國(guó)");
pageContext.setAttribute("countries",countries);
%>
<logic:iterate id="country" name="countries">
<bean:write name="country" property="key"/>:
<bean:write name="country" property="value"/>
</logic:iterate>
在bean:write中通過(guò)property的key和value分別獲得HaspMap對(duì)象的鍵和值。其顯示結(jié)果為:
country5:德國(guó)
country3:英國(guó)
country2:美國(guó)
country4:法國(guó)
country1:中國(guó)
由結(jié)果可看出,它并未按添加的順序?qū)⑵滹@示出來(lái)。這是因?yàn)镠aspMap是無(wú)序存放的。
3、嵌套遍歷
<%
String[] colors={"red","green","blue"};
String[] countries1={"中國(guó)","美國(guó)","法國(guó)"};
String[] persons={"喬丹","布什","克林頓"};
ArrayList list2=new ArrayList();
list2.add(colors);
list2.add(countries1);
list2.add(persons);
pageContext.setAttribute("list2",list2);
%>
<logic:iterate id="first" name="list2" indexId="numberfirst">
<bean:write name="numberfirst"/>
<logic:iterate id="second" name="first">
<bean:write name="second"/>
</logic:iterate>
<br>
</logic:iterate>
運(yùn)行效果:
0 red green blue
1 中國(guó) 美國(guó) 法國(guó)
2 喬丹 布什 克林頓
<logic:iterate id="it" name="list" length="2">
<bean write name="it"/><br/>
</logic:iterate>
list 是你要遍例的對(duì)象 it是list里面的元素的類型 ,還有個(gè)offset屬性,是用來(lái)表示起始位置的,比如,offset=“1”從第二位開(kāi)始遍歷出值,offset=“0”是默認(rèn)值