struts2 <s:iterator>遍历Map的多种方法

struts2 遍历Map的多种方法

主要针对以下几种情况的Map:

Java代码  
  1.  private Map<String, String> strMap = new HashMap<String, String>();  
  2.   
  3. private Map<String, Person> perMap = new HashMap<String, Person>();  
  4.   
  5. private Map<String, String[]> strArryMap = new HashMap<String, String[]>();  
  6.   
  7. private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();  


下面给出一个示例
1).ExpressMapAction.java
Java代码  
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import com.expre.struts2.bean.Person;  
  7. import com.expre.struts2.bean.Phone;  
  8. import com.opensymphony.xwork2.ActionSupport;  
  9.   
  10. public class ExpressMapAction extends ActionSupport {  
  11.     private static final long serialVersionUID = -4251480679223607716L;  
  12.   
  13.     private Map<String, String> strMap = new HashMap<String, String>();  
  14.   
  15.     private Map<String, Person> perMap = new HashMap<String, Person>();  
  16.   
  17.     private Map<String, String[]> strArryMap = new HashMap<String, String[]>();  
  18.   
  19.     private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();  
  20.    
  21.  //get&set方法,这里都省略了  
  22.   
  23.  @Override  
  24.  public String execute() throws Exception {  
  25.   
  26.   // 值为字符串  
  27.   strMap.put("first""zxx");  
  28.   strMap.put("second""lsx");  
  29.   strMap.put("third""wxh");  
  30.   
  31.   // 值为javabean对象  
  32.   Person person = new Person("001""zxx"22);  
  33.   person.setPhone(new Phone("apple", 18957157189L));  
  34.   
  35.   perMap.put("one", person);  
  36.   
  37.   person = new Person("002""lsx"25);  
  38.   person.setPhone(new Phone("HTC", 18957157187L));  
  39.   perMap.put("two", person);  
  40.   
  41.   // 数组处理  
  42.   strArryMap.put("arr1"new String[] { "1""310000""hz" });  
  43.   strArryMap.put("arr2"new String[] { "2""310001""xh" });  
  44.   strArryMap.put("arr3"new String[] { "3""310002""sc" });  
  45.     
  46.   //list对象处理  
  47.   List<Person> list=new ArrayList<Person>();    
  48.   list.add(new Person("001""zxx"22));  
  49.   list.add(new Person("002""lsx"25));  
  50.   perLstMap.put("one", list);  
  51.     
  52.   list=new ArrayList<Person>();    
  53.   list.add(new Person("003""wlx"26));  
  54.   list.add(new Person("004""hzx"28));  
  55.   perLstMap.put("two", list);  
  56.   
  57.   return "result";  
  58.  }  
  59. }  


2).strMap.jsp
Java代码   收藏代码
  1. <html>  
  2.  <body>  
  3.   <ul>  
  4.    <li>访问Map:<s:property value="strMap"/></li>  
  5.    <li>访问Map中某个元素:  
  6.     <s:property value="strMap.first"/> |  
  7.     <s:property value="strMap['second']"/> |  
  8.     <s:property value="strMap[\'third\']"/>  
  9.    </li>  
  10.    <li>访问Map中所有的key:<s:property value="strMap.keys"/></li>  
  11.    <li>访问Map中所有的value:<s:property value="strMap.values"/></li>  
  12.    <li>访问容器的大小:  
  13.     <s:property value="strMap.size()"/> |  
  14.     <s:property value="strMap.size"/>//这是map特别的地方  
  15.     </li>  
  16.      
  17.     <li>迭代循环取值,最简单  
  18.      <s:iterator value="strMap" id="entry">  
  19.        <s:property value="#entry"/>{  
  20.         key: <s:property value="key"/>   
  21.       value:<s:property value="value"/>}|  
  22.        </s:iterator>  
  23.       </li>  
  24.        
  25.     <li>迭代循环取值  
  26.      <s:iterator value="strMap.keySet()" id="key">  
  27.        <s:property value="key"/>或<s:property value="#key"/>:  
  28.            <s:if test="strMap[#key]!=null">   
  29.             <s:property value="strMap.get(#key)"/> |  
  30.            </s:if>  
  31.        </s:iterator>  
  32.       </li>  
  33.        
  34.       <li>迭代循环取数组值  
  35.      <s:iterator value="strMap" id="entry">  
  36.        <s:property value="#entry"/>{  
  37.        <s:property value="value[0]"/>   
  38.        <s:property value="value[1]"/>  |  
  39.        <s:property value="value[2]"/>  }  
  40.        </s:iterator>  
  41.       </li>  
  42.        
  43.       <li>迭代循环取对象值,最直接:  
  44.        <ul>  
  45.        <s:iterator value="perMap" id="entry">     
  46.         <li>  
  47.           <s:property value="#entry"/>  {  
  48.          ID:<s:property value="value.ID"/>   
  49.          Name:<s:property value="value.name"/>   
  50.          Age:<s:property value="value.age"/>  }|  
  51.          </li>  
  52.        </s:iterator>  
  53.        </ul>  
  54.       </li>  
  55.        
  56.       <li>迭代循环取对象的属性值  
  57.     <s:iterator value="perMap.keySet()" id="key">  
  58.           <s:property value="#key"/>:  
  59.            <s:iterator value="perMap.get(#key)">  
  60.                <s:property value="ID"/>  
  61.                <s:property value="name"/>  
  62.                <s:property value="phone.name"/>  
  63.            </s:iterator>|  
  64.       </s:iterator>  
  65.       </li>  
  66.        
  67.       <li>稍复杂的迭代  
  68.        <s:iterator value="perLstMap" id="entry">    
  69.         <s:set name="total" value="#entry.value.size"/>    
  70.         <s:iterator value="#entry.value" status="s">    
  71.            <s:if test="#s.first">  
  72.             <s:property value="#entry.key"/>:共${total}条  
  73.            </s:if>   {  
  74.            <s:property value="ID"/>  |  
  75.            <s:property value="name"/>   |  
  76.            <s:property value="age"/>  
  77.             };  
  78.         </s:iterator>    
  79.      </s:iterator>   
  80.    </li>  
  81.    </ul>  
  82.  </body>  
  83. </html> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值