- 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");
- studentMap=newHashMap<String,Student>();
- studentMap.put("student1",newStudent(newLong(1),"20034140201","张三1","男",25));
- arrayMap=newHashMap<String,String[]>();
- arrayMap.put("arr1",newString[]{"1","2003401","leejie","male","20"});
- 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);
- 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;
- }
- }
- <%@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>
- </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>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.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>
- <s:iteratorvalue="listMap"id="column">
- <s:setname="total"value="#column.value.size"/>
- <s:iteratorvalue="#column.value"status="s">
- <tr>
- <s:iftest="#s.first"><tdrowspan="${total}"><s:propertyvalue="#column.key"/></td></s:if>
- <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>
关键字使用: List<String> days ["Monday","Thursday","Friday","Sunday"]
使用
top 关键字:使用top 指代当前迭代元素,可以为对象
<s:iterator value="days">
<s:if test="top!='Monday'">
<s:property />
</s:if>
</s:iterator>
使用
last / first 关键字:#of.last用于判断当前迭代到的元素是否为最后一个元素,iterator 标签中的status属性代表当前迭代的位置;
<s:iterator value="aTs" status="of">
<s:if test="#of.last"><br/></s:if>
<s:iterator value="top">
<s:property />
</s:iterator>
</s:iterator>
使用
odd / even 关键字:odd关键字用来判断当前迭代位置是否为奇数行
<s:iterator value="days" status="offset">
<s:else>
<s:if test="#offset.odd==true">
<li style="color: red" mce_style="color: red"><s:property /></li>
</s:if>
<s:else>
<li><s:property /></li>
</s:else>
</s:else>
</s:iterator>
总结下,当声明iterator的status属性时,通过#statusName.method可以使用以下方法:
even : boolean - 如果当前迭代位置是偶数返回true
odd : boolean - 如果当前迭代位置是奇数返回true
count : int - 返回当前迭代位置的计数(从1开始)
index : int - 返回当前迭代位置的编号(从0开始)
first : boolean - 如果当前迭代位置是第一位时返回true
last : boolean - 如果当前迭代位置是最后一位时返回true
modulus(operand : int) : int - 返回当前计数(从1开始)与指定操作数的模数
odd : boolean - 如果当前迭代位置是奇数返回true
count : int - 返回当前迭代位置的计数(从1开始)
index : int - 返回当前迭代位置的编号(从0开始)
first : boolean - 如果当前迭代位置是第一位时返回true
last : boolean - 如果当前迭代位置是最后一位时返回true
modulus(operand : int) : int - 返回当前计数(从1开始)与指定操作数的模数