一.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. Struts2数据验证机制

    1. 手动验证的实现 只需要在继承ActionSupport类的情况下,直接重写validate()方法即可.使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是 ...

  2. SPSS Clementine 数据挖掘入门3

    转摘:http://www.cnblogs.com/dekevin/archive/2012/04/27/2473683.html 了解SPSS Clementine的基本应用后,再对比微软的SSAS ...

  3. http://blog.csdn.net/steveguoshao/article/details/38414145

    http://blog.csdn.net/steveguoshao/article/details/38414145

  4. 【cocos2d-x 3.7 飞机大战】 决战南海I (七) 控制器的实现

    控制器中的功能并不多,主要是以下这些 //对玩家分数的操作 CC_SYNTHESIZE_READONLY(SaveData *, m_saveData, SaveData); void update( ...

  5. 算法笔记_132:最大流量问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 何为最大流量问题? 给定一个有向图,并为每一个顶点设定编号为0~n,现在求取从顶点0(PS:也可以称为源点)到顶点n(PS:也可以称为汇点)后,顶点 ...

  6. Android调用OCR识别图像中的文字

    // CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...

  7. vue mixin使用

    1.概述 将一些公用方法引入到不同的组件中. 2.引入方式 (1)全局引入 // 注册全局Mixin Vue.mixin({ methods: { $touch: function() { // 用以 ...

  8. 41、java与mysql乱码的问题

    解决方法一:(最重要的一种方法)你看下my.ini,有无 [MySQL] default-character-set=utf8 [client] default-character-set=utf8 ...

  9. 【Redis】windows环境下安装redis服务器,并配置php的redis扩展

    win7示例: 1.下载Redis服务器 : https://github.com/dmajkic/redis/downloads:(随便下,建议不要太老的) 2.在D:\phpStudy\ 新建Re ...

  10. 虚拟机VMware下CentOS6.5安装教程图文详解(VMnet8)

    (写在最前面:如果你下载的iso文件 CentOS-6.*-x86_64-minimal.iso 系列,那么需要这么安装:https://blog.csdn.net/lixianlin/article ...