【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)
2015-07-16 10:19
447 查看
ognl表达式之使用iterator迭代ValueStack中的可迭代元素(集合,map,数组。。)
1.在ValueStack中放入数据:
[align=left][/align]
[align=left]2.在jsp页面使用标签获取集合中的数据:[/align]
[align=left]
[/align]
将List<User>放入map栈中,Person里有hobbies集合!
1.User:
2.Hobbies:
将集合放入map栈中:
ActionContext.getContext().put("userList",
userList);
[align=left]
[/align]
[align=left]在页面迭代显示:[/align]
总结,当前正在迭代的元素在对象栈栈顶,使用<s:iterator > 标签时,不指定value,那么默认迭代的就是栈顶的集合,如果需要迭代的集合位于对象栈,但不是栈顶,使用value="xx"来指定;如果需要迭代的元素位于map'栈,使用value="#xx"来指定!
1.在ValueStack中放入数据:
[align=left]public class IteratorAction extends ActionSupport{[/align] [align=left] /**[/align] [align=left] * 1.把一个list放入到map栈中迭代[/align] [align=left] */[/align] public String putListToMap(){ [align=left] List<Person> personList = new ArrayList<Person>();[/align] [align=left] Person p1 = new Person();[/align] [align=left] p1.setPid( "1");[/align] [align=left] p1.setUsername( "p1");[/align] [align=left] [/align] [align=left] Person p2 = new Person();[/align] [align=left] p2.setPid( "2");[/align] [align=left] p2.setUsername( "p2");[/align] [align=left] [/align] [align=left] personList.add(p1);[/align] [align=left] personList.add(p2);[/align] [align=left] [/align] ActionContext. getContext().put("pList", personList); [align=left] [/align] [align=left] return "list_map" ;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * 2.把一个list放入到对象栈的栈顶[/align] [align=left] */[/align] public String putListToObjStack(){ [align=left] List<Person> personList = new ArrayList<Person>();[/align] [align=left] Person p1 = new Person();[/align] [align=left] p1.setPid( "1");[/align] [align=left] p1.setUsername( "p1");[/align] [align=left] [/align] [align=left] Person p2 = new Person();[/align] [align=left] p2.setPid( "2");[/align] [align=left] p2.setUsername( "p2");[/align] [align=left] [/align] [align=left] personList.add(p1);[/align] [align=left] personList.add(p2);[/align] [align=left] [/align] [align=left] ActionContext. getContext().getValueStack().push(personList);[/align] [align=left] [/align] [align=left] return "list_objstack" ;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * 3.把map存放在map栈中[/align] [align=left] */[/align] public String putMapToMap(){ Map<String, Person> map = new HashMap<String, Person>(); [align=left] Person p1 = new Person();[/align] [align=left] p1.setPid( "1");[/align] [align=left] p1.setUsername( "p1");[/align] [align=left] [/align] [align=left] Person p2 = new Person();[/align] [align=left] p2.setPid( "2");[/align] [align=left] p2.setUsername( "p2");[/align] [align=left] [/align] map.put( "m1", p1); map.put( "m2", p2); [align=left] [/align] ActionContext. getContext().put("map", map); [align=left] return "map_map" ;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * 4.map栈中迭代Object[][/align] [align=left] */[/align] public String putObjectsToMap(){ [align=left] [/align] [align=left] Object[] objs = new Object[2];[/align] [align=left] [/align] [align=left] Person p1 = new Person();[/align] [align=left] p1.setPid( "1");[/align] [align=left] p1.setUsername( "p1");[/align] [align=left] [/align] [align=left] Person p2 = new Person();[/align] [align=left] p2.setPid( "2");[/align] [align=left] p2.setUsername( "p2");[/align] [align=left] [/align] [align=left] objs[0] = p1;[/align] [align=left] objs[1] = p2;[/align] ActionContext. getContext().put("objs", objs); [align=left] return "objs_map" ;[/align] [align=left] }[/align] 24132 [align=left] /**[/align] [align=left] * 5.将List<List<Person>>放于map栈中;[/align] [align=left] */[/align] public String putListlistToMap(){ [align=left] List<List<Person>> lists = new ArrayList<List<Person>>();[/align] [align=left] List<Person> personList1 = new ArrayList<Person>();[/align] [align=left] List<Person> personList2 = new ArrayList<Person>();[/align] [align=left] Person p1 = new Person();[/align] [align=left] p1.setPid( "1");[/align] [align=left] p1.setUsername( "p1");[/align] [align=left] [/align] [align=left] Person p2 = new Person();[/align] [align=left] p2.setPid( "2");[/align] [align=left] p2.setUsername( "p2");[/align] [align=left] [/align] [align=left] personList1.add(p1);[/align] [align=left] personList2.add(p2);[/align] [align=left] [/align] [align=left] lists.add(personList1);[/align] [align=left] lists.add(personList2);[/align] [align=left] [/align] ActionContext. getContext().put("lists", lists); [align=left] [/align] [align=left] return "listlist_map" ;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * 6.将Map<String,List<Person>>放于map栈中迭代[/align] [align=left] */[/align] public String putMaplistToMap(){ [align=left] List<Person> personList1 = new ArrayList<Person>();[/align] [align=left] List<Person> personList2 = new ArrayList<Person>();[/align] [align=left] Person p1 = new Person();[/align] [align=left] p1.setPid( "1");[/align] [align=left] p1.setUsername( "p1");[/align] [align=left] [/align] [align=left] Person p2 = new Person();[/align] [align=left] p2.setPid( "2");[/align] [align=left] p2.setUsername( "p2");[/align] [align=left] [/align] [align=left] personList1.add(p1);[/align] [align=left] personList2.add(p2);[/align] Map<String, List<Person>> map = new HashMap<String, List<Person>>(); map.put( "list1", personList1); map.put( "list2", personList2); ActionContext. getContext().put("map", map); [align=left] [/align] [align=left] return "maplist_map" ;[/align] [align=left] }[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * List<Map<String,Person>>[/align] [align=left] * List<List<Map<String,Person>>>[/align] [align=left] * List<Map<String,List<Preson>>>[/align] [align=left] */[/align] [align=left] [/align] [align=left] /**[/align] [align=left] * 7.将List<Map<String,Person>>放于map栈中;[/align] [align=left] */[/align] [align=left] [/align] public String putListmaptoMap(){ [align=left] List<Map<String, Person>> mapList= new ArrayList<Map<String,Person>>();[/align] Map<String, Person> map1= new HashMap<String, Person>(); Map<String, Person> map2= new HashMap<String, Person>(); [align=left] [/align] [align=left] map1.put( "p1", new Person("zhangsan" , "1" ));[/align] [align=left] map1.put( "p2", new Person("lisi" ,"2" ));[/align] [align=left] [/align] [align=left] map2.put( "p3", new Person("zhangsan2" , "111" ));[/align] [align=left] map2.put( "p4", new Person("lisi2" ,"211" ));[/align] [align=left] [/align] [align=left] mapList.add(map1);[/align] [align=left] mapList.add(map2);[/align] [align=left] [/align] ActionContext. getContext().put("maplist", mapList); [align=left] return "listmap_map" ;[/align] [align=left] }[/align] [align=left] [/align] [align=left]}[/align] |
[align=left]2.在jsp页面使用标签获取集合中的数据:[/align]
[align=left]
[/align]
[align=left] <table >[/align] [align=left] <!--[/align] [align=left] iterator是迭代标签[/align] [align=left] value 直接跟 ognl表达式[/align] [align=left] iterator当前正在迭代的元素在栈顶[/align] [align=left] 如果当前正在迭代的元素已经迭代完毕,则该对象会从栈顶删除[/align] [align=left] 如果value属性不写,默认迭代栈顶的元素[/align] [align=left] -->[/align] [align=left] <!--[/align] [align=left] 1. List<Person> list在 map栈[/align] [align=left] -->[/align] [align=left] [/align] [align=left] <s:iterator value= "#pList">[/align] [align=left] <s:property/>[/align] [align=left] <tr>[/align] [align=left] <td>[/align] [align=left] <s:property value= "pid"/>[/align] [align=left] </td>[/align] [align=left] <td>[/align] [align=left] <s:property value= "username"/>[/align] [align=left] </td>[/align] [align=left] </tr>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] 2.List<Person> list在对象栈[/align] [align=left] -->[/align] [align=left] [/align] [align=left] <s:iterator>[/align] [align=left] <tr>[/align] [align=left] <td>[/align] [align=left] <s:property value= "pid"/>[/align] [align=left] </td>[/align] [align=left] <td>[/align] [align=left] <s:property value= "username"/>[/align] [align=left] </td>[/align] [align=left] </tr>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] 3.把Map<String,Person>放到map栈中;[/align] [align=left] -->[/align] [align=left] [/align] [align=left] <s:iterator value= "#map">[/align] [align=left] <s:debug></ s:debug>[/align] [align=left] <tr>[/align] [align=left] <td>[/align] [align=left] <s:property value="key" />, <s:property value= "value.pid"/>[/align] [align=left] </td>[/align] [align=left] <td>[/align] [align=left] <s:property value="key" />, <s:property value= "value.username"/>[/align] [align=left] </td>[/align] [align=left] </tr>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] 4.将Object[]放于map栈中[/align] [align=left] -->[/align] [align=left] [/align] [align=left] <s:iterator value= "#objs">[/align] [align=left] <tr>[/align] [align=left] <td>[/align] [align=left] <s:property value= "pid"/>[/align] [align=left] </td>[/align] [align=left] <td>[/align] [align=left] <s:property value="username" />[/align] [align=left] </td>[/align] [align=left] </tr>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] 5.迭代map栈中的List<List<Person>>[/align] [align=left] -->[/align] [align=left] [/align] [align=left] <s:iterator value= "#lists">[/align] [align=left] <!--[/align] [align=left] 因为当前正在迭代的元素在栈顶,所以不需要写value的值[/align] [align=left] -->[/align] [align=left] [/align] [align=left] <s:iterator>[/align] [align=left] <tr>[/align] [align=left] <td>[/align] [align=left] <s:property value= "pid"/>[/align] [align=left] </td>[/align] [align=left] <td>[/align] [align=left] <s:property value="username" />[/align] [align=left] </td>[/align] [align=left] </tr>[/align] [align=left] </s:iterator>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] 6.迭代map栈中的Map<String,List<Person>>[/align] [align=left] -->[/align] [align=left] <s:iterator value= "#map">[/align] [align=left] <s:property value= "key"/>[/align] [align=left] <s:iterator value= "value">[/align] [align=left] <s:property value= "pid"/>[/align] [align=left] <s:property value= "username"/> [/align] [align=left] </s:iterator>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] <!--[/align] [align=left] 7.迭代map栈中的List<Map<String,Person>>[/align] [align=left] -->[/align] [align=left] <s:iterator value= "#maplist">[/align] [align=left] <s:iterator>[/align] [align=left] key: <s:property value= "key"/>[/align] [align=left] pid:<s:property value="value.pid"/>[/align] [align=left] name: <s:property value="value.username" />[/align] [align=left] <br/>[/align] [align=left] </s:iterator>[/align] [align=left] </s:iterator>[/align] [align=left] [/align] [align=left] </table >[/align] |
1.User:
[align=left] private String id;[/align] [align=left] private String username;[/align] [align=left] private String password;[/align] [align=left] private String email;[/align] [align=left] private String phone;[/align] [align=left] private List<Hobby> hobbies;[/align] |
[align=left] private String id;[/align] [align=left] private String name;[/align] |
ActionContext.getContext().put("userList",
userList);
[align=left]
[/align]
[align=left]在页面迭代显示:[/align]
[align=left] <table border="1px">[/align] [align=left] <tr>[/align] [align=left] <th> 用户id</th >[/align] [align=left] <th> 用户名</th >[/align] [align=left] <th> 邮箱</th >[/align] [align=left] <th> 手机</th >[/align] [align=left] <th> 爱好</th >[/align] [align=left] </tr>[/align] [align=left] [/align] [align=left] <s:iterator value= "#userList" >[/align] [align=left] <tr>[/align] [align=left] <td>< s:property value ="id" /></td > [/align] [align=left] <td>< s:property value ="username" /></td> [/align] [align=left] <td>< s:property value ="phone"/></ td>[/align] [align=left] <td>< s:property value ="email"/></ td> [/align] [align=left] [/align] [align=left] <td>[/align] [align=left] <s:iterator value= "hobbies">[/align] [align=left] <s:property value= "name"/>[/align] [align=left] </s:iterator>[/align] [align=left] </td> [/align] [align=left] </tr>[/align] [align=left] <s:debug></ s:debug>[/align] [align=left] </s:iterator>[/align] [align=left] </table >[/align] |
相关文章推荐
- JQuery+Strusts1.x无刷新登录
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 浅析iterator与指针的区别
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 浅谈javascript 迭代方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- asp.net4.0框架下验证机制失效的原因及处理办法
- struts2 jquery 打造无限层次的树
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记
- ajax交互Struts2的action(客户端/服务器端)
- Flex中最好的MVC框架Mate框架
- java struts常见错误以及原因分析
- JavaScript 异步调用框架 (Part 4 - 链式调用)
- JavaScript 异步调用框架 (Part 2 - 用例设计)