您的位置:首页 > 编程语言 > Java开发

【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)

2015-07-16 10:19 447 查看
ognl表达式之使用iterator迭代ValueStack中的可迭代元素(集合,map,数组。。)

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][/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]
将List<User>放入map栈中,Person里有hobbies集合!
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]
2.Hobbies:

[align=left]     private String id;[/align]
[align=left]     private String name;[/align]
将集合放入map栈中:
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]
总结,当前正在迭代的元素在对象栈栈顶,使用<s:iterator > 标签时,不指定value,那么默认迭代的就是栈顶的集合,如果需要迭代的集合位于对象栈,但不是栈顶,使用value="xx"来指定;如果需要迭代的元素位于map'栈,使用value="#xx"来指定!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息