`
mywhy
  • 浏览: 63586 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

struts2标签 遍历map集合

 
阅读更多
首先我们来构造几个map集合。
 
 假设如下代码 都是在ssh配置环境下搭建好,(至少struts2开发环境搭建好)
 
(1).java 代码  
 
     下面的student对象包含的字段为
 
     private Long id;
     private String num;
     private String name;
     private String sex;
     private Integer age;
      Action中的代码
 
           private Map<String,String> map; 
           private Map<String,Student> studentMap; 
           private Map<String,String[]> arrayMap; 
           private Map<String,List<Student>> listMap;   // 实现 四个map对象的get 和set方法。
 
 map=new HashMap<String,String>(); 
 map.put("1", "one"); 
 map.put("2", "two"); 
 
 studentMap=new HashMap<String,Student>(); 
 studentMap.put("student1",new Student(new Long(1),"20034140201","张三1","男",25)); 
 studentMap.put("student2",new Student(new Long(2),"20034140202","张三2","女",26)); 
 studentMap.put("student3",new Student(new Long(3),"20034140202","张三3","男",27)); 
 
 arrayMap=new HashMap<String,String[]>(); 
 arrayMap.put("arr1", new String[]{"1","2003401","leejie","male","20"}); 
 arrayMap.put("arr2", new String[]{"2","2003402","huanglie","male","25"}); 
 arrayMap.put("arr3", new String[]{"3","2003403","lixiaoning","male","21"}); 
 
 
 
 listMap=new HashMap<String,List<Student>>(); 
 
 List<Student> list1=new ArrayList<Student>(); 
 list1.add(new Student(new Long(1),"20034140201","张三1","男",25)); 
 list1.add(new Student(new Long(2),"20034140202","张三2","男",25)); 
 list1.add(new Student(new Long(3),"20034140203","张三3","男",25)); 
 listMap.put("class1", list1); 
 
 List<Student> list2=new ArrayList<Student>(); 
 list2.add(new Student(new Long(1),"20034140301","李四1","男",20)); 
 list2.add(new Student(new Long(2),"20034140302","李四2","男",21)); 
 list2.add(new Student(new Long(3),"20034140303","李四3","男",22)); 
 list2.add(new Student(new Long(4),"20034140304","李四4","男",23)); 
 listMap.put("class2", list2); 
 
(2).通过上述java代码我们已经构建好了4个map集合。 接下来的重头戏就是如何通过strut2的标签来获取map集合中的值。
 
<b>1.map中的value为String字符串</b><br>    
 
<s:iterator value="map" id="column">    
<s:property value="#column"/><br>      //这里获取到的值为key=value    即:键值对
key: <s:property value="key"/><br>      //这里的key为内置的,我们只要在value中写上key 即会有值
value:<s:property value="value"/><br>    //同样这里的value也为内置的
</s:iterator>    
 
 <b>2.map中的value为Student对象</b>    
  <s:iterator value="studentMap" id="column">    
  <tr>    
   <td><s:property value="#column"/></td>    
   <td><s:property value="key"/></td>   
   <td><s:property value="value"/></td>   //这里的value返回的是一个student对象
   <td><s:property value="value.id"/></td>    //这里获取student对象中的属性值
   <td><s:property value="value.num"/></td>    
   <td><s:property value="value.name"/></td>    
   <td><s:property value="value.sex"/></td>    
   <td><s:property value="value.age"/></td>    
  </tr>    
  </s:iterator>    
 
遍历studentMap 还可以用下面方式,跟上面方式效果是一样的
 
<b>2.map中的value为Student对象</b>    
  <s:iterator value="studentMap" id="column">    
  <tr>    
   <td><s:property value="#column"/></td>    
   <td><s:property value="key"/></td>   
   <s:iterator value="value">
   <td><s:property value="id"/></td>    
   <td><s:property value="num"/></td>    
   <td><s:property value="name"/></td>    
   <td><s:property value="sex"/></td>    
   <td><s:property value="age"/></td>    
    </s:iterator>
  </tr>    
  </s:iterator>  
 
 
  
  
  <b>3.map中的value为String数组</b>    
 <s:iterator value="arrayMap" id="column">    
   <tr>    
    <td><s:property value="#column"/></td>  <!--同时取出键和值-->
    <td><s:property value="value[0]"/></td>    
    <td><s:property value="value[1]"/></td>    
    <td><s:property value="value[2]"/></td>    
    <td><s:property value="value[3]"/></td>    
    <td><s:property value="value[4]"/></td>    
   </tr>    
   </s:iterator>   
   
     <b>4.map中的value为list集合</b>    
      <s:iterator value="listMap" id="column">    
    <s:set name="total" value="#column.value.size"/>    //注意<s:set 标签的用法
    <s:iterator value="#column.value" status="s">     //这里#column.value 还是一个student的list集合,因而需要再次迭代一次
     <tr>    
     <s:property value="#s.first"/>     //判断是不是集合中的第一个对象
       <s:if test="#s.first"><td rowspan="${total}"><s:property value="#column.key"/></td></s:if>    
       <td><s:property value="id"/></td>    
       <td><s:property value="num"/></td>    
       <td><s:property value="name"/></td>    
       <td><s:property value="sex"/></td>    
       <td><s:property value="age"/></td>    
     </tr>    
    </s:iterator>    
 </s:iterator>   
转自:http://www.2cto.com/kf/201310/252442.html
分享到:
评论

相关推荐

    struts2中的map遍历

    NULL 博文链接:https://jinguanghui880602.iteye.com/blog/1637943

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB组件  25.1 创建EJB组件  25.1.1 编写Remote接口  25.1.2 编写Home...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

    第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB组件  25.1 创建EJB组件  25.1.1 编写Remote接口  25.1.2 编写Home...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

    第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB组件  25.1 创建EJB组件  25.1.1 编写Remote接口  25.1.2 编写Home...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

    第24章 Hibernate与Struts框架  24.1 实现业务数据  24.2 实现业务逻辑  24.3 netstore应用的订单业务  24.4 小结 第25章 Hibernate与EJB组件  25.1 创建EJB组件  25.1.1 编写Remote接口  25.1.2 编写Home...

    java面试题

    72.8. struts2.0的常用标签 71 72.9. action是单实例还是多实例,为什么? 73 72.10. Struts的validate框架是如何验证的? 74 72.11. dispatchAction是用什么技术实现的? 74 72.12. struts2.0的mvc模式?与struts...

    JAVA面试题最全集

    15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp与udp的区别 18.链表与散列表和数组的区别 19.堆和栈的区别 20.ejb的分类及区别 21.你对现在软件业以及国内软件业的看法 22.谈谈java多线程 23.谈谈文件...

    超级有影响力霸气的Java面试题大全文档

    通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出...

    java 面试题 总结

    通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出Session...

Global site tag (gtag.js) - Google Analytics