s:iterator输出key为一个对象,value为一个List集合的Map

简介: 情景: 前几天想用struts2的标签来迭代一些数据, 但一般都会用List来迭代, 这个很容易, 而且官方文档也有详细的例子。 Map<Topic, List<Item>> 我要迭代这个map, 在页面上显示。 [java] view plaincopyprint? public class Topic{     private 

情景:

前几天想用struts2的标签来迭代一些数据, 但一般都会用List来迭代, 这个很容易, 而且官方文档也有详细的例子。

Map<Topic, List<Item>>

我要迭代这个map, 在页面上显示。

  1. public class Topic{  
  2.    private Long id;  
  3.    private String title;  
  4.    //setter、getter方法省略  
  5. }  
  6. public class Item{  
  7.      private Long id;  
  8.      private String content;  
  9.      private Topic topic;  
  10.      //setter、getter方法省略  
  11. }  
public class Topic{
   private Long id;
   private String title;
   //setter、getter方法省略
}
public class Item{
     private Long id;
     private String content;
     private Topic topic;
     //setter、getter方法省略
}
  1. <s:iterator value="map" id="column">  
  2.      <s:property value="#column.key.title">  
  3.      <s:iterator value="#column.value">  
  4.             <s:property value="content">  
  5.       </s:iterator>  
  6. </s:iterator>  
<s:iterator value="map" id="column">
     <s:property value="#column.key.title">
     <s:iterator value="#column.value">
            <s:property value="content">
      </s:iterator>
</s:iterator>

但是上面这样的代码能够迭代出数据, 但是个人认为一般迭代map也许不是很好的办法。

因为map是不能够保证每次的排序都是有顺序的, 所以一般还是考虑用List代替Map。

将上面的Topic类添加一个属性:

  1. public class Topic{  
  2.      private Long id;  
  3.      private String title;  
  4.      private List<Item> items;  
  5.      //setter、getter方法省略  
  6. }  
public class Topic{
     private Long id;
     private String title;
     private List<Item> items;
     //setter、getter方法省略
}

这样就可以                   List<Topic>

  1. <s:iterator value="list">  
  2.      <s:property value="title">  
  3.      <s:iterator value="items">  
  4.             <s:property value="content">  
  5.       </s:iterator>  
  6. </s:iterator>  
<s:iterator value="list">
     <s:property value="title">
     <s:iterator value="items">
            <s:property value="content">
      </s:iterator>
</s:iterator>

这样使用的好处就是可以控制元素出现的顺序,不会像map一样。

目录
相关文章
|
10月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
396 4
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
562 1
|
存储 安全 Java
Java 学习路线 35 掌握 List 集合从入门到精通的 List 集合核心知识
本文详细解析Java中List集合的原理、常用实现类(如ArrayList、LinkedList)、核心方法及遍历方式,并结合数据去重、排序等实际应用场景,帮助开发者掌握List在不同业务场景下的高效使用,提升Java编程能力。
768 0
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
301 18
你对Collection中Set、List、Map理解?
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
566 20
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
458 5
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
609 1
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
274 3
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
426 0
|
安全 Java 数据库连接
让我们讲解一下 Map 集合遍历的方式
我是小假 期待与你的下一次相遇 ~
439 43