struts2 遍历Map的多种方法
主要针对以下几种情况的Map:
- private Map<String, String> strMap = new HashMap<String, String>();
- private Map<String, Person> perMap = new HashMap<String, Person>();
- private Map<String, String[]> strArryMap = new HashMap<String, String[]>();
- private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();
下面给出一个示例
1).ExpressMapAction.java
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.expre.struts2.bean.Person;
- import com.expre.struts2.bean.Phone;
- import com.opensymphony.xwork2.ActionSupport;
- public class ExpressMapAction extends ActionSupport {
- private static final long serialVersionUID = -4251480679223607716L;
- private Map<String, String> strMap = new HashMap<String, String>();
- private Map<String, Person> perMap = new HashMap<String, Person>();
- private Map<String, String[]> strArryMap = new HashMap<String, String[]>();
- private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();
- //get&set方法,这里都省略了
- @Override
- public String execute() throws Exception {
- // 值为字符串
- strMap.put( "first" , "zxx" );
- strMap.put( "second" , "lsx" );
- strMap.put( "third" , "wxh" );
- // 值为javabean对象
- Person person = new Person( "001" , "zxx" , 22 );
- person.setPhone( new Phone( "apple" , 18957157189L));
- perMap.put( "one" , person);
- person = new Person( "002" , "lsx" , 25 );
- person.setPhone( new Phone( "HTC" , 18957157187L));
- perMap.put( "two" , person);
- // 数组处理
- strArryMap.put( "arr1" , new String[] { "1" , "310000" , "hz" });
- strArryMap.put( "arr2" , new String[] { "2" , "310001" , "xh" });
- strArryMap.put( "arr3" , new String[] { "3" , "310002" , "sc" });
- //list对象处理
- List<Person> list= new ArrayList<Person>();
- list.add( new Person( "001" , "zxx" , 22 ));
- list.add( new Person( "002" , "lsx" , 25 ));
- perLstMap.put( "one" , list);
- list= new ArrayList<Person>();
- list.add( new Person( "003" , "wlx" , 26 ));
- list.add( new Person( "004" , "hzx" , 28 ));
- perLstMap.put( "two" , list);
- return "result" ;
- }
- }
2).strMap.jsp
- <html>
- <body>
- <ul>
- <li>访问Map:<s:property value= "strMap" /></li>
- <li>访问Map中某个元素:
- <s:property value= "strMap.first" /> |
- <s:property value= "strMap['second']" /> |
- <s:property value= "strMap[\'third\']" />
- </li>
- <li>访问Map中所有的key:<s:property value= "strMap.keys" /></li>
- <li>访问Map中所有的value:<s:property value= "strMap.values" /></li>
- <li>访问容器的大小:
- <s:property value= "strMap.size()" /> |
- <s:property value= "strMap.size" /> //这是map特别的地方
- </li>
- <li>迭代循环取值,最简单
- <s:iterator value= "strMap" id= "entry" >
- <s:property value= "#entry" />{
- key: <s:property value= "key" />
- value:<s:property value= "value" />}|
- </s:iterator>
- </li>
- <li>迭代循环取值
- <s:iterator value= "strMap.keySet()" id= "key" >
- <s:property value= "key" />或<s:property value= "#key" />:
- <s: if test= "strMap[#key]!=null" >
- <s:property value= "strMap.get(#key)" /> |
- </s: if >
- </s:iterator>
- </li>
- <li>迭代循环取数组值
- <s:iterator value= "strMap" id= "entry" >
- <s:property value= "#entry" />{
- <s:property value= "value[0]" />
- <s:property value= "value[1]" /> |
- <s:property value= "value[2]" /> }
- </s:iterator>
- </li>
- <li>迭代循环取对象值,最直接:
- <ul>
- <s:iterator value= "perMap" id= "entry" >
- <li>
- <s:property value= "#entry" /> {
- ID:<s:property value= "value.ID" />
- Name:<s:property value= "value.name" />
- Age:<s:property value= "value.age" /> }|
- </li>
- </s:iterator>
- </ul>
- </li>
- <li>迭代循环取对象的属性值
- <s:iterator value= "perMap.keySet()" id= "key" >
- <s:property value= "#key" />:
- <s:iterator value= "perMap.get(#key)" >
- <s:property value= "ID" />
- <s:property value= "name" />
- <s:property value= "phone.name" />
- </s:iterator>|
- </s:iterator>
- </li>
- <li>稍复杂的迭代
- <s:iterator value= "perLstMap" id= "entry" >
- <s:set name= "total" value= "#entry.value.size" />
- <s:iterator value= "#entry.value" status= "s" >
- <s: if test= "#s.first" >
- <s:property value= "#entry.key" />:共${total}条
- </s: if > {
- <s:property value= "ID" /> |
- <s:property value= "name" /> |
- <s:property value= "age" />
- };
- </s:iterator>
- </s:iterator>
- </li>
- </ul>
- </body>
- </html>