【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)
来源:互联网 发布:淘宝客服泄露买家信息 编辑:程序博客网 时间:2024/05/24 05:39
ognl表达式之使用iterator迭代ValueStack中的可迭代元素(集合,map,数组。。)
public class IteratorAction extends ActionSupport{
/**
* 1.把一个list放入到map栈中迭代
*/
public String putListToMap(){
List<Person> personList = new ArrayList<Person>();
Person p1 = new Person();
p1.setPid( "1");
p1.setUsername( "p1");
Person p2 = new Person();
p2.setPid( "2");
p2.setUsername( "p2");
personList.add(p1);
personList.add(p2);
ActionContext. getContext().put("pList", personList);
return "list_map" ;
}
/**
* 2.把一个list放入到对象栈的栈顶
*/
public String putListToObjStack(){
List<Person> personList = new ArrayList<Person>();
Person p1 = new Person();
p1.setPid( "1");
p1.setUsername( "p1");
Person p2 = new Person();
p2.setPid( "2");
p2.setUsername( "p2");
personList.add(p1);
personList.add(p2);
ActionContext. getContext().getValueStack().push(personList);
return "list_objstack" ;
}
/**
* 3.把map存放在map栈中
*/
public String putMapToMap(){
Map<String, Person> map = new HashMap<String, Person>();
Person p1 = new Person();
p1.setPid( "1");
p1.setUsername( "p1");
Person p2 = new Person();
p2.setPid( "2");
p2.setUsername( "p2");
map.put( "m1", p1);
map.put( "m2", p2);
ActionContext. getContext().put("map", map);
return "map_map" ;
}
/**
* 4.map栈中迭代Object[]
*/
public String putObjectsToMap(){
Object[] objs = new Object[2];
Person p1 = new Person();
p1.setPid( "1");
p1.setUsername( "p1");
Person p2 = new Person();
p2.setPid( "2");
p2.setUsername( "p2");
objs[0] = p1;
objs[1] = p2;
ActionContext. getContext().put("objs", objs);
return "objs_map" ;
}
/**
* 5.将List<List<Person>>放于map栈中;
*/
public String putListlistToMap(){
List<List<Person>> lists = new ArrayList<List<Person>>();
List<Person> personList1 = new ArrayList<Person>();
List<Person> personList2 = new ArrayList<Person>();
Person p1 = new Person();
p1.setPid( "1");
p1.setUsername( "p1");
Person p2 = new Person();
p2.setPid( "2");
p2.setUsername( "p2");
personList1.add(p1);
personList2.add(p2);
lists.add(personList1);
lists.add(personList2);
ActionContext. getContext().put("lists", lists);
return "listlist_map" ;
}
/**
* 6.将Map<String,List<Person>>放于map栈中迭代
*/
public String putMaplistToMap(){
List<Person> personList1 = new ArrayList<Person>();
List<Person> personList2 = new ArrayList<Person>();
Person p1 = new Person();
p1.setPid( "1");
p1.setUsername( "p1");
Person p2 = new Person();
p2.setPid( "2");
p2.setUsername( "p2");
personList1.add(p1);
personList2.add(p2);
Map<String, List<Person>> map = new HashMap<String, List<Person>>();
map.put( "list1", personList1);
map.put( "list2", personList2);
ActionContext. getContext().put("map", map);
return "maplist_map" ;
}
/**
* List<Map<String,Person>>
* List<List<Map<String,Person>>>
* List<Map<String,List<Preson>>>
*/
/**
* 7.将List<Map<String,Person>>放于map栈中;
*/
public String putListmaptoMap(){
List<Map<String, Person>> mapList= new ArrayList<Map<String,Person>>();
Map<String, Person> map1= new HashMap<String, Person>();
Map<String, Person> map2= new HashMap<String, Person>();
map1.put( "p1", new Person("zhangsan" , "1" ));
map1.put( "p2", new Person("lisi" ,"2" ));
map2.put( "p3", new Person("zhangsan2" , "111" ));
map2.put( "p4", new Person("lisi2" ,"211" ));
mapList.add(map1);
mapList.add(map2);
ActionContext. getContext().put("maplist", mapList);
return "listmap_map" ;
}
}
2.在jsp页面使用标签获取集合中的数据:
<table >
<!--
iterator是迭代标签
value 直接跟 ognl表达式
iterator当前正在迭代的元素在栈顶
如果当前正在迭代的元素已经迭代完毕,则该对象会从栈顶删除
如果value属性不写,默认迭代栈顶的元素
-->
<!--
1. List<Person> list在 map栈
-->
<s:iterator value= "#pList">
<s:property/>
<tr>
<td>
<s:property value= "pid"/>
</td>
<td>
<s:property value= "username"/>
</td>
</tr>
</s:iterator>
<!--
2.List<Person> list在对象栈
-->
<s:iterator>
<tr>
<td>
<s:property value= "pid"/>
</td>
<td>
<s:property value= "username"/>
</td>
</tr>
</s:iterator>
<!--
3.把Map<String,Person>放到map栈中;
-->
<s:iterator value= "#map">
<s:debug></ s:debug>
<tr>
<td>
<s:property value="key" />, <s:property value= "value.pid"/>
</td>
<td>
<s:property value="key" />, <s:property value= "value.username"/>
</td>
</tr>
</s:iterator>
<!--
4.将Object[]放于map栈中
-->
<s:iterator value= "#objs">
<tr>
<td>
<s:property value= "pid"/>
</td>
<td>
<s:property value="username" />
</td>
</tr>
</s:iterator>
<!--
5.迭代map栈中的List<List<Person>>
-->
<s:iterator value= "#lists">
<!--
因为当前正在迭代的元素在栈顶,所以不需要写value的值
-->
<s:iterator>
<tr>
<td>
<s:property value= "pid"/>
</td>
<td>
<s:property value="username" />
</td>
</tr>
</s:iterator>
</s:iterator>
<!--
6.迭代map栈中的Map<String,List<Person>>
-->
<s:iterator value= "#map">
<s:property value= "key"/>
<s:iterator value= "value">
<s:property value= "pid"/>
<s:property value= "username"/>
</s:iterator>
</s:iterator>
<!--
7.迭代map栈中的List<Map<String,Person>>
-->
<s:iterator value= "#maplist">
<s:iterator>
key: <s:property value= "key"/>
pid:<s:property value="value.pid"/>
name: <s:property value="value.username" />
<br/>
</s:iterator>
</s:iterator>
</table >
将List<User>放入map栈中,Person里有hobbies集合!
1.User:
private String id;
private String username;
private String password;
private String email;
private String phone;
private List<Hobby> hobbies;
2.Hobbies:
private String id;
private String name;
将集合放入map栈中:
ActionContext.getContext().put("userList", userList);
在页面迭代显示:
<table border="1px">
<tr>
<th> 用户id</th >
<th> 用户名</th >
<th> 邮箱</th >
<th> 手机</th >
<th> 爱好</th >
</tr>
<s:iterator value= "#userList" >
<tr>
<td>< s:property value ="id" /></td >
<td>< s:property value ="username" /></td>
<td>< s:property value ="phone"/></ td>
<td>< s:property value ="email"/></ td>
<td>
<s:iterator value= "hobbies">
<s:property value= "name"/>
</s:iterator>
</td>
</tr>
<s:debug></ s:debug>
</s:iterator>
</table >
总结,当前正在迭代的元素在对象栈栈顶,使用<s:iterator > 标签时,不指定value,那么默认迭代的就是栈顶的集合,如果需要迭代的集合位于对象栈,但不是栈顶,使用value="xx"来指定;如果需要迭代的元素位于map'栈,使用value="#xx"来指定!
0 0
- 【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)
- 【Struts2五】ValueStack以及ognl表达式二(常用标签)
- 【Struts2五】ValueStack以及ognl表达式一(概述)
- Struts2 OGNL表达式的iterator标签使用详解
- OGNL表达式struts2标签“%,#,$”详解
- ValueStack、OGNL和Struts2标签
- Struts2-Ognl表达式与ValueStack
- struts2中的if/else,iterator标签以及ognl简单使用
- struts2学习三(OGNL和ValueStack值栈)
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- SQLServer2008 镜像配置详解
- C#中产生SQL语句的几种方式
- OpenCV中,将一个彩色视频文件以灰度格式输出
- 360方案 相关技术(推荐、排序、点击率预估)
- 单链表判断是否带环,环的接入点
- 【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)
- 当出现UnhandledExceptionFilter时,如何用windbg 定位正确堆栈
- 解读Android之Service(3)AIDL
- JavaScript常用技巧
- Android Design Support Library 中控件的使用简单介绍(一)介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android
- IOS内购支付服务器验证模式
- 普元级联菜单
- Java总结篇系列:Java泛型
- 并查集(Union-Find)算法介绍