Struts2使用OGNL遍历各种map总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2使用OGNL遍历各种map总结相关的知识,希望对你有一定的参考价值。

一.Action中的代码:MapAction.java

package com.zx.demo.action;
import java.util.ArrayList;
 
import java.util.HashMap;
 
import java.util.List;
 
import java.util.Map;
 
import com.opensymphony.xwork2.ActionSupport;
 
import com.zx.demo.model.Product;
 
import com.zx.demo.model.Student;
 
 
public class MapAction extends ActionSupport
 
{   
  private Map<String,String>  map;
  private Map<String,Student>  studentMap;
  private Map<String,String[]>  arrayMap;
  private Map<String,List<Student>>  listMap; 
 
   
 //这里省略get  set方法
 
 public String testMap(){   
       
map=new HashMap<String,String>();
 map.put("1", "one");
 map.put("2", "two");
 
        
studentMap=new HashMap<String,Student>();
studentMap.put("student1",new Student(new Long(1),"20034140201","张三1","男",25));
studentMap.put("student2",new Student(new Long(2),"20034140202","张三2","女",26));
studentMap.put("student3",new Student(new Long(3),"20034140202","张三3","男",27));
 
  
arrayMap=new HashMap<String,String[]>();
arrayMap.put("arr1", new String[]{"1","2003401","leejie","male","20"});
arrayMap.put("arr2", new String[]{"2","2003402","huanglie","male","25"});
arrayMap.put("arr3", new String[{"3","2003403","lixiaoning","male","21"});
 
        
listMap=new HashMap<String,List<Student>>();
   List<Student> list1=new ArrayList<Student>();

list1.add(new Student(new Long(1),"20034140201","张三1","男",25));
list1.add(new Student(new Long(2),"20034140202","张三2","男",25));
list1.add(new Student(new Long(3),"20034140203","张三3","男",25));
   listMap.put("class1", list1);
  List<Student> list2=new ArrayList<Student>();
list2.add(new Student(new Long(1),"20034140301","李四1","男",20));
list2.add(new Student(new Long(2),"20034140302","李四2","男",21));
list2.add(new Student(new Long(3),"20034140303","李四3","男",22));
list2.add(new Student(new Long(4),"20034140304","李四4","男",23));
   listMap.put("class2", list2);

return SUCCESS;   
   }   

二.前端测试页面:testMap.jsp
Java代码
<%@ page
contentType="text/html;charset=UTF-8"
%>  
<%@ taglib prefix="s"
uri="/struts-tags" %>
  <html>
<head>
<title>struts2中的map遍历总结</title>
</head>
<body>
<b>1.map中的key为String,value为String字符串</b><br>
      <s:iterator value="map" id="column">
      <s:property value="#column"/><br>
 key: <s:property value="key"/><br>
 value:<s:property value="value"/><br>

      </s:iterator>  
******************************************<br>
  <table border="1" width="50%"  cellspacing="0" cellpadding="0">
<tr>
  <td>key=value</td>
  <td>ID</td>
  <td>num</td>
  <td>name</td>
  <td>sex</td>
  <td>age</td>
</tr>

******************************************<br>
 <b>2.map中的key为String,value为Student对象</b>
<s:iterator value="studentMap" id="column">

<tr>
 <td>
   <s:property value="#column"/></td>
  <td>
   <s:property value="value.id"/></td>
  <td>
    <s:property value="value.num"/></td>
  <td>
    <s:property value="value.name"/></td>
  <td>
     <s:property  value="value.sex"/></td>
  <td>
     <s:property value="value.age"/></td>
 </tr>
</s:iterator>
</table>
 <p>  

 
<table border="1" width="50%"  cellspacing="0" cellpadding="0">
  <tr>
     <td>key=value</td>
     <td>ID</td>
     <td>num</td>
     <td>name</td>
     <td>sex</td>
     <td>age</td>
  </tr>
 
******************************************<br>
<b>3.map中的key为String,value为String数组</b>  
<s:iterator value="arrayMap" id="column">
<tr>
  <td><s:property value="#column"/></td>
  <td><s:property value="value[0]"/></td>
  <td><s:property value="value[1]"/></td>
  <td><s:property value="value[2]"/></td>
  <td><s:property value="value[3]"/></td>
  <td><s:property value="value[4]"/></td>
</tr>
</s:iterator>

</table>
<p>  
<table border="1" width="50%"  cellspacing="0" cellpadding="0">
<tr>
  <td>class</td>
   <td>ID</td>
   <td>num</td>
   <td>name</td>
   <td>sex</td>
   <td>age</td>
</tr>
 ******************************************<br>
<b>4.map中的key为String,value为list集合</b>   
<s:iterator value="listMap" id="column">
  <s:set name="total" value="#column.value.size"/>
  <s:iterator value="#column.value" status="s">
<tr>
  <s:if test="#s.first">
    <td rowspan="${total}">
    <s:property value="#column.key"/>
    </td>
  </s:if>  
     <td>
     <s:property value="id"/>
     </td>
     <td>
      <s:property value="num"/>
     </td>
     <td>
      <s:property value="name"/>
     </td>
     <td><s:property value="sex"/></td>
     <td><s:property value="age"/></td>
</tr>
</s:iterator>
</s:iterator>

  </table>
</body>
</html> 

附:map的类型为Map<Integer,List(Menu)>在前端遍历,session.powerList存放的类型是:List(Menu)
  <s:iterator value="map" id="mapList">
      <s:if test="#mapList.key==0"><!-key为0的是父级菜单->
      <s:iterator value="#mapList.value" id="map">
       <li class="current"><!--遍历父级菜单,取得其名字-->   
      <b><s:property value="#map.menuName" /></b></a>
         <ul>
         <s:iterator value="#session.powerList" id="power">
      <!--遍历父级菜单下的所用子菜单-->
            <s:if test="#power.menuFatherId==#map.menuId">
        <li><a onClick="funFrame(‘admin/<s:property value="#power.menuUrl" />‘)"  ><s:property value="#power.menuName" /></a>
        </li>
             </s:if>
         </s:iterator>
         </ul>
         </li>
         </s:iterator>
          </s:if>
          </s:iterator>

以上是关于Struts2使用OGNL遍历各种map总结的主要内容,如果未能解决你的问题,请参考以下文章

Struts2学习第七课 OGNL

Struts2中的OGNL详解 《转》

Struts2之OGNL

struts2 ognl存放数据

Struts2中OGNL表达式的用法

Struts2高级开发之OGNL