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一样。

目录
相关文章
|
2月前
|
Java
java8中List对象转另一个List对象
java8中List对象转另一个List对象
41 0
|
4天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
7 0
|
4天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
7天前
|
JSON 数据格式
使用 Gson 将 Map、List等转换为json string
使用 Gson 将 Map、List等转换为json string
12 0
|
14天前
list转迭代器Iterator
list转迭代器Iterator
|
19天前
|
Java API
List转Map(id为key,list为value)
List转Map(id为key,list为value)
13 0
|
1月前
|
存储 Java API
java集合Collection(List)和泛型
java集合Collection(List)和泛型
|
1月前
|
算法
递归淘汰List集合头部数据,获取最终集合的起始坐标
递归淘汰List集合头部数据,获取最终集合的起始坐标
|
1月前
|
Java
list集合 使用java8同一列表获取前一条的数据放到当前对象中
list集合 使用java8同一列表获取前一条的数据放到当前对象中
|
1月前
|
存储 安全 Java
Java集合详解(List、Map、Set)
Java集合详解(List、Map、Set)
34 4