在struts中有好多的標籤方便開發,好比<logic:iterate>標籤,能夠很好的顯示list的內容:html
(一)對List的循環遍歷:java
1.先定義一個User類:數組
import java.io.Serializable; public final class User implements Serializable { private String name = null; private String password = null; public String getName () { return (this.name); } public void setName(String name) { this.name = name; } public String getPassword () { return (this. password); } public void setPassword (String password) { this. password = password; } }
2.創建jsp文件如:session
<%@ page language="java" %> <%@ page import="example.*"%> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <% java.util.ArrayList list = new java.util.ArrayList(); User usera=new User(); usera.setName("white"); usera.setPassword("abcd"); list.add(usera); User userb=new User(); userb.setName("mary"); userb.setPassword("hijk"); list.add(userb); session.setAttribute("list", list); %> <html><body><table width="100%"> <logic:iterate id="a" name="list" type=" example.User "> <tr><td width="50%"> name: <bean:write name="a" property="name"/> 或者${a.name} 或者 ${a["name"]} <td/><td width="50%"> password: <bean:write name="a" property="password"/> </td></tr> </logic:iterate> </table></body></html>
"id"是在iterate循環的時候使用的內部循環變量,指代list中的一個實例,name指代的是在request、session、response等中的變量名jsp
<bean:write name="a" property="name"/>標記是用來顯示的,也可用EL表達式如:${a.name}或${a["name"]}this
注:EL 提供「.「和「[ ]「兩種運算符來存取數據。
當要存取的屬性名稱中包含一些特殊字符,如.或?等並不是字母或數字的符號,就必定要使用「[ ]「。例如:
${user.My-Name}應當改成${user["My-Name"] }
若是要動態取值時,就能夠用「[ ]「來作,而「.「沒法作到動態取值。例如:
${sessionScope.user[data]}中data 是一個變量spa
(二)對數組進行循環遍歷:code
<% String[] testArray={"str1","str2","str3"}; pageContext.setAttribute("test",testArray); %> <logic:iterate id="show" name="test"> <bean:write name="show"/> 或者${show} </logic:iterate>
(三)對集合Map的輸出htm
如:有數據開發
HashMap<String,TestIterate> hm = new HashMap<String,TestIterate>(); hm.put("11",new TestIterate("aa",11)); hm.put("22",new TestIterate("bb",22)); hm.put("33",new TestIterate("cc",33)); hm.put("44",new TestIterate("dd",11)); hm.put("55",new TestIterate("ee",22)); hm.put("66",new TestIterate("ff",33)); request.setAttribute("hm",hm);
則頁面輸出可寫成:
<logic:iterate id="h" name="hm" scope="request"> name:<bean:write name="h" property="value.name"/> age:<bean:write name="h" property="value.age"/><br/> </logic:iterate>
或者用EL寫做:
<logic:iterate id="h" name="hm" scope="request" length="2" offset="1"> ${h["key"] } + ${h.value["name"] }<br/> </logic:iterate>
其中length屬性指定了輸出元素的個數,offset屬性指定了從第幾個元素開始輸出,如此處爲1,則表示從第二個元素開始輸出
另外,該標記還有一個indexId屬性,它指定一個變量存放當前集合中正被訪問的元素的序號,如:
程序代碼:
<logic:iterate id="h" name="hm" scope="request" indexId="number">
第${number}個:${h["key"] } + ${h.value["name"] }<br/>
</logic:iterate>
(四)嵌套遍歷:
程序代碼:
<% String[] colors={"red","green","blue"}; String[] countries1={"中國","美國","法國"}; 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>
運行效果: