一.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总结的更多相关文章

  1. Struts2的OGNL遍历数组、List、简单的Map

    一.简介 <s:iterator />可以遍历 数据栈里面的任何数组,集合等等 在使用这个标签的时候有三个属性值得我们关注      1. value属性:可选的属性,value属性是指一 ...

  2. struts2:OGNL表达式,遍历List、Map集合;投影的使用

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...

  3. Struts2的OGNL表达式语言

    一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...

  4. Struts2之OGNL

    一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性 ...

  5. Struts2对Ognl的支持

                                                      Struts2对Ognl的支持 一. 写作背景 由于工作性质的变化,最近一直在研究struts2,从 ...

  6. [JavaEE] 深入理解Struts2的ognl标签

    OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够 ...

  7. struts2:OGNL表达式之#、%、$符号运用

    1. OGNL表达达符号"#" 1.1 #用于访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() 注意:当系统创建了Action实 ...

  8. struts2之OGNL用法

    浅析OGNL OGNL是Object-GraphNavigation Language的缩写,是一种功能强大的表达式语言 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对 ...

  9. 【Struts2】Ognl与ValueStack

    一.OGNL 1.1 概述 1.2 OGNL 五大类功能 1.3 演示 二.ValueStack 2.1 概述 2.2 ValueStack结构 2.3 结论 2.3 一些问题 三.OGNL表达式常见 ...

随机推荐

  1. 安卓源码下载 windows

    git clone https://android.googlesource.com/name Name Descriptionaccessories/manifest device/asus/deb ...

  2. iOS网络编程解析协议三:JSON数据传输解析

    作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带来了很大的便利, ...

  3. Android -- Android JUint 与 Sqlite

    创建一个数据库                                                                           public PersonSQLit ...

  4. 将项目的版本控制从Vss迁移到Git

    之前在Vs2008上一直使用的是Vss版本控制,现在将版本控制更改为Git 迁移原因是其他公司想要在我们公司开发的一个CRM系统做一些定制(个性化需求,将软件上的公司名称和链接更改为他们的或一些跟我们 ...

  5. 【论文笔记】Leveraging Datasets with Varying Annotations for Face Alignment via Deep Regression Network

    參考文献: Zhang J, Kan M, Shan S, et al. Leveraging Datasets With Varying Annotations for Face Alignment ...

  6. mvc:annotation-driven注解的作用

    <mvc:annotation-driven>会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,这是 ...

  7. Wifidog及认证过程初分析

    Wifidog初分析 一.综述 wifidog是搭建无线热点认证系统的解决方案之一,他比nocat.nodog更适合互联网营销思路.常见的使用在openwrt系统上,它实现了路由器和认证服务器的数据交 ...

  8. 【找规律】HDU 4662——MU Puzzle

    来源:点击打开链接 这个题目的来源是人工智能领域MU猜想.比赛的时候也参考了相关资料,可是最后差一点没有把规律推出来. 注意到以下几个性质.第一,MI怎么变换M永远只能在第一位.第二,因为变换时只能在 ...

  9. 使用 RDVTabBarController 制作底部凸起的 TabBar 笔记

    欢迎訪问我的个人博客http://mmoaay.photo/ 本文主要针对底部凸起的 TabBar 这样的特殊需求,不感兴趣的能够直接绕过- 近期做的一个项目须要底部凸起的 TabBar,效果例如以下 ...

  10. MFC用代码加入对话框背景图片和button图片

    执行环境:VS2013 一.加入对话框背景图片 ①插入位图,把生成的空白位图进行替换(xxx.bmp图片的名称和格式与生成的空白位图保持一致) ②查看属性,得到位图ID ③编写代码: void CMF ...