1.假使现在有这样一个Action:
- importjava.util.ArrayList;
- importjava.util.HashMap;
- importjava.util.List;
- importjava.util.Map;
- importcom.opensymphony.xwork2.ActionSupport
- importcom.model.Student
- publicclassMapActionextendsActionSupport
- {
- privateMap<String,String>map;
- privateMap<String,Student>studentMap;
- privateMap<String,String[]>arrayMap;
- privateMap<String,List<Student>>listMap;
- publicStringtestMap()
- {
- map=newHashMap<String,String>();
- map.put("1","one");
- map.put("2","two");
- studentMap=newHashMap<String,Student>();
- studentMap.put("student1",newStudent(newLong(1),"20034140201","张三1","男",25));
- studentMap.put("student2",newStudent(newLong(2),"20034140202","张三2","女",26));
- studentMap.put("student3",newStudent(newLong(3),"20034140202","张三3","男",27));
- arrayMap=newHashMap<String,String[]>();
- arrayMap.put("arr1",newString[]{"1","2003401","leejie","male","20"});
- arrayMap.put("arr2",newString[]{"2","2003402","huanglie","male","25"});
- arrayMap.put("arr3",newString[]{"3","2003403","lixiaoning","male","21"});
- listMap=newHashMap<String,List<Student>>();
- List<Student>list1=newArrayList<Student>();
- list1.add(newStudent(newLong(1),"20034140201","张三1","男",25));
- list1.add(newStudent(newLong(2),"20034140202","张三2","男",25));
- list1.add(newStudent(newLong(3),"20034140203","张三3","男",25));
- listMap.put("class1",list1);
- List<Student>list2=newArrayList<Student>();
- list2.add(newStudent(newLong(1),"20034140301","李四1","男",20));
- list2.add(newStudent(newLong(2),"20034140302","李四2","男",21));
- list2.add(newStudent(newLong(3),"20034140303","李四3","男",22));
- list2.add(newStudent(newLong(4),"20034140304","李四4","男",23));
- listMap.put("class2",list2);
- returnSUCCESS;
- }
- publicMap<String,String>getMap(){
- returnmap;
- }
- publicvoidsetMap(Map<String,String>map){
- this.map=map;
- }
- publicMap<String,Student>getStudentMap(){
- returnstudentMap;
- }
- publicvoidsetStudentMap(Map<String,Student>studentMap){
- this.studentMap=studentMap;
- }
- publicMap<String,String[]>getArrayMap(){
- returnarrayMap;
- }
- publicvoidsetArrayMap(Map<String,String[]>arrayMap){
- this.arrayMap=arrayMap;
- }
- publicMap<String,List<Student>>getListMap(){
- returnlistMap;
- }
- publicvoidsetListMap(Map<String,List<Student>>listMap){
- this.listMap=listMap;
- }
- }
这个action中给出了各种类型的map,下面我们有这样一个jsp,我们要将这些map展示到这个jsp中:
- <%@pagecontentType="text/html;charset=UTF-8"%>
- <%@taglibprefix="s"uri="/struts-tags"%>
- <html>
- <head>
- <title>struts2中的map遍历总结</title>
- </head>
- <body>
- <b>1.map中的value为String字符串</b><br>
- <s:iteratorvalue="map"id="column">
- <s:propertyvalue="#column"/><br>
- key:<s:propertyvalue="key"/><br>
- value:<s:propertyvalue="value"/><br>
- ******************************************<br>
- </s:iterator>
- <b>2.map中的value为Student对象</b>
- <tableborder="1"width="50%"cellspacing="0"cellpadding="0">
- <tr>
- <td>key=value</td>
- <td>ID</td>
- <td>num</td>
- <td>name</td>
- <td>sex</td>
- <td>age</td>
- </tr>
- <s:iteratorvalue="studentMap"id="column">
- <tr>
- <td><s:propertyvalue="#column"/></td>
- <td><s:propertyvalue="value.id"/></td>
- <td><s:propertyvalue="value.num"/></td>
- <td><s:propertyvalue="value.name"/></td>
- <td><s:propertyvalue="value.sex"/></td>
- <td><s:propertyvalue="value.age"/></td>
- </tr>
- </s:iterator>
- </table>
- <p>
- <b>3.map中的value为String数组</b>
- <tableborder="1"width="50%"cellspacing="0"cellpadding="0">
- <tr>
- <td>key=value</td>
- <td>ID</td>
- <td>num</td>
- <td>name</td>
- <td>sex</td>
- <td>age</td>
- </tr>
- <s:iteratorvalue="arrayMap"id="column">
- <tr>
- <td><s:propertyvalue="#column"/></td>
- <td><s:propertyvalue="value[0]"/></td>
- <td><s:propertyvalue="value[1]"/></td>
- <td><s:propertyvalue="value[2]"/></td>
- <td><s:propertyvalue="value[3]"/></td>
- <td><s:propertyvalue="value[4]"/></td>
- </tr>
- </s:iterator>
- </table>
- <p>
- <b>4.map中的value为list凑集</b>
- <tableborder="1"width="50%"cellspacing="0"cellpadding="0">
- <tr>
- <td>class</td>
- <td>ID</td>
- <td>num</td>
- <td>name</td>
- <td>sex</td>
- <td>age</td>
- </tr>
- <1.<s:iteratorvalue="listHashMap"id="listid">
- <s:iteratorvalue="#listid.value"id="listidsub">
- <tr>
- <td><s:propertyvalue="key"/></td>
- <td><s:propertyvalue="id"/></td>
- <td><s:propertyvalue="num"/></td>
- <td><s:propertyvalue="name"/></td>
- <td><s:propertyvalue="sex"/></td>
- <td><s:propertyvalue="age"/></td>
- </tr>
- </s:iterator>
- </s:iterator>
- </table>
- </body>
- </html>
- 4、普通属性
- publicStringexecute(){
- username="zhangsan";
- password="123";
- }
- <s:propertyvalue="username"/><br>
- <s:propertyvalue="password"/><br>
- 5、自定义对象
- publicStringexecute(){
- userInfo=newUserInfo();
- userInfo.setUsername("hhh");
- userInfo.setPassword("111");
- }
- <s:propertyvalue="userInfo.username"/><br>
- <s:propertyvalue="userInfo.password"/><br>
- 6、List(普通属性)
- publicStringexecute(){
- list=newArrayList<String>();
- list.add("aaa");
- list.add("bbb");
- list.add("ccc");
- }
- <s:iteratorvalue="list"var="var">
- <s:propertyvalue="var"/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="list">
- <s:property/><br>
- </s:iterator>
- 6、List(自定义对象属性)
- publicStringexecute(){
- list=newArrayList<UserInfo>();
- UserInfouserInfo=newUserInfo();
- userInfo.setUsername("u1");
- userInfo.setPassword("p1");
- userInfo.setRoleInfo(newRoleInfo("r1"));
- list.add(userInfo);
- userInfo=newUserInfo();
- userInfo.setUsername("u2");
- userInfo.setPassword("p2");
- userInfo.setRoleInfo(newRoleInfo("r2"));
- list.add(userInfo);
- }
- <s:iteratorvalue="list"var="var">
- <s:propertyvalue="#var.username"/>
- <s:propertyvalue="#var.password"/>
- <s:propertyvalue="#var.roleInfo.rolename"/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="list">
- <s:propertyvalue="username"/>
- <s:propertyvalue="password"/>
- <s:propertyvalue="roleInfo.rolename"/><br>
- </s:iterator>
- 7、数组(普通属性)
- publicStringexecute(){
- strs=newString[2];
- strs[0]="as";
- strs[1]="asd";
- }
- <s:iteratorvalue="strs">
- <s:property/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="strs"var="var">
- <s:propertyvalue="var"/><br>
- </s:iterator>
- 8、数组(自定义对象属性)
- publicStringexecute(){
- strs=newUserInfo[2];
- UserInfouserInfo=newUserInfo();
- userInfo.setUsername("u11");
- userInfo.setPassword("11");
- strs[0]=userInfo;
- userInfo=newUserInfo();
- userInfo.setUsername("u22");
- userInfo.setPassword("22");
- strs[1]=userInfo;
- }
- <s:iteratorvalue="strs">
- <s:propertyvalue="username"/>
- <s:propertyvalue="password"/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="strs"var="var">
- <s:propertyvalue="#var.username"/>
- <s:propertyvalue="#var.password"/><br>
- </s:iterator>
- 8、数组(自定义对象属性)
- publicStringexecute(){
- strs=newUserInfo[2];
- UserInfouserInfo=newUserInfo();
- userInfo.setUsername("u11");
- userInfo.setPassword("11");
- userInfo.setRoleInfo(newRoleInfo("r11"));
- strs[0]=userInfo;
- userInfo=newUserInfo();
- userInfo.setUsername("u22");
- userInfo.setPassword("22");
- userInfo.setRoleInfo(newRoleInfo("r22"));
- strs[1]=userInfo;
- }
- <s:iteratorvalue="strs"var="var">
- <s:propertyvalue="#var.username"/>
- <s:propertyvalue="#var.password"/>
- <s:propertyvalue="#var.roleInfo.rolename"/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="strs">
- <s:propertyvalue="username"/>
- <s:propertyvalue="password"/>
- <s:propertyvalue="roleInfo.rolename"/><br>
- </s:iterator>
- 8、Map(普通属性)
- publicStringexecute(){
- map=newHashMap<String,String>();
- map.put("k1","v1");
- map.put("k2","v2");
- }
- <s:iteratorvalue="map"var="var">
- <s:propertyvalue="#var.key"/>
- <s:propertyvalue="#var.value"/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="map">
- <s:propertyvalue="key"/>
- <s:propertyvalue="value"/><br>
- </s:iterator>
- 8、Map(自定义对象属性)
- publicStringexecute(){
- map=newHashMap<String,UserInfo>();
- UserInfouserInfo=newUserInfo();
- userInfo.setUsername("u1");
- userInfo.setPassword("p1");
- userInfo.setRoleInfo(newRoleInfo("r1"));
- map.put("k1",userInfo);
- userInfo=newUserInfo();
- userInfo.setUsername("u2");
- userInfo.setPassword("p2");
- userInfo.setRoleInfo(newRoleInfo("r2"));
- map.put("k2",userInfo);
- }
- <s:iteratorvalue="map"var="var">
- <s:propertyvalue="#var.key"/>
- <s:propertyvalue="#var.value.username"/>
- <s:propertyvalue="#var.value.password"/>
- <s:propertyvalue="#var.value.roleInfo.rolename"/><br>
- </s:iterator>
- 或者
- <s:iteratorvalue="map">
- <s:propertyvalue="key"/>
- <s:propertyvalue="value.username"/>
- <s:propertyvalue="value.password"/>
- <s:propertyvalue="value.roleInfo.rolename"/><br>
- </s:iterator>
- 8、Map嵌套Map(自定义对象属性)
- publicStringexecute(){
- map=newTreeMap<String,Map<String,UserInfo>>();
- Map<String,UserInfo>innerMap=newTreeMap<String,UserInfo>();
- UserInfouserInfo=newUserInfo();
- userInfo.setUsername("u1");
- userInfo.setPassword("p1");
- userInfo.setRoleInfo(newRoleInfo("r1"));
- userInfo=newUserInfo();
- userInfo.setUsername("u11");
- userInfo.setPassword("p11");
- userInfo.setRoleInfo(newRoleInfo("r11"));
- innerMap.put("k1",userInfo);
- innerMap.put("k11",userInfo);
- map.put("key1",innerMap);
- //////////////////////////
- innerMap=newTreeMap<String,UserInfo>();
- userInfo=newUserInfo();
- userInfo.setUsername("u2");
- userInfo.setPassword("p2");
- userInfo.setRoleInfo(newRoleInfo("r2"));
- userInfo=newUserInfo();
- userInfo.setUsername("u22");
- userInfo.setPassword("p22");
- userInfo.setRoleInfo(newRoleInfo("r22"));
- innerMap.put("k2",userInfo);
- innerMap.put("k22",userInfo);
- map.put("key2",innerMap);
- }
- <s:iteratorvalue="map"var="var">
- <s:iteratorvalue="value">
- <s:propertyvalue="#var.key"/>
- <s:propertyvalue="key"/>
- <s:propertyvalue="value.username"/>
- <s:propertyvalue="value.password"/>
- <s:propertyvalue="value.roleInfo.rolename"/><br>
- </s:iterator>
- </s:iterator>