Velocity遍历map与遍历list

来源:互联网 发布:淘宝哪家的玉是真的 编辑:程序博客网 时间:2024/05/29 12:29
问题: 
向页面传递key与value的组合 

1. 

1.1 思路,key与value,想到用map 
Java代码  收藏代码
  1. private Map<String,String>  lineBusiness = new HashMap<String,String>() ;  
  2. lineBusiness.put("abc","bcd");  
  3. lineBusiness.put("dbc","bcd");  
  4. lineBusiness.put("gbc","bcd");  

velocity中遍历map 
Java代码  收藏代码
  1. #foreach($param in ${lineBusiness.entrySet()})   
  2.  ${param.key}  ${param.value}  
  3. #end  


但 key不是按照添加顺序显示的 
原因:map的key是hash值,是随机的,不是按照顺序输出的 

业务要求,要按照添加顺序显示 

1.2 

如果要求按顺序输出可以采用 
Java代码  收藏代码
  1. Map<K,V> map = new LinkedHashMap() ;  
  2. #foreach($infos in $lineBusiness.entrySet())  
  3. ${infos.key}  ${infos.value}  
  4. #end  

按添加顺序显示 

1.3 
遍历map中的key 
Java代码  收藏代码
  1. #foreach($infos in $lineBusiness.keySet())  
  2. ${infos}  
  3. #end  

遍历map中的value 
Java代码  收藏代码
  1. #foreach($infos in $lineBusiness.values())  
  2. ${infos}  
  3. #end  

1.4 
java中map里面的key是否可以按我们插入进去的顺序输出? 
综上,取决于实现map的方式,若为LinkedHashMap,则可以 

2.组装key与value为po类 

2.1 在已有类的内部定义,即内部类 
Java代码  收藏代码
  1. List<po> list = new ArrayList<po>();  
  2. po.setKey("");  
  3. po.setValue("");  
  4. list.add(po);  

velocity中遍历list 
Java代码  收藏代码
  1. #foreach($info in $list)  
  2.     $!info.value  $info.key  
  3. #end   

确认list已经赋值,但页面没有显示,原因 po 必须 是public 的访问权限, 
且 对该 成员变量添加 set get 方法,才可传值到VM中 

而 一个类中 只能有一个类是 public的,其余的类都不可以是 public, 
即 定义内部类,是不能传值的 

2.2 在同包或其他包中定义po类,引用该po类进行实现 

效果:正确 

这种方式也可以实现,但若属性不是很多的时候,不建议这样做,浪费时间且代码不好维护