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方法详解的全部内容,希望对大家有所帮助。有兴趣的朋友可以参阅:OGNL表达式基本语法与用法详解  Struts2 通过ognl表达式实现投影  Struts2 OGNL表达式实例详解等。感谢大家对本站的支持。

(0)

相关推荐

  • Struts2 通过ognl表达式实现投影

    projection(投影):俗话说就是过滤,就是过滤器把符合条件的过滤出来 struts.xml: <package name="ognl" namespace="/ognl" extends="struts-default"> <action name="pro" class="cn.edu.hpu.ognl.OgnlAction4"> <result name="

  • struts2静态资源映射代码示例

    在struts2框架中有一些它所需要的公共的静态内容,比如说js文件和一些css文件.当框架需要这些静态内容的时候,FilterDidpatcher会自动提供给我们.那么FilterDidpatcher是如何知道我们在请求静态内容的呢?任何请求只要以"/struts/"开头,那么FilterDidpatcher就会认为它是在请求静态内容.在识别出请求是请求静态资源后FilterDidpatcher如何去匹配寻找静态资源呢?这里有两个关键点: 1.确定所要请求的资源路径.FilterDi

  • struts2开发流程及详细配置

    一:Struts开发步骤: 1. web项目,引入struts - jar包 2. web.xml中,引入struts的核心功能 配置过滤器 3. 开发action 4. 配置action src/struts.xml 二:详细配置    1.引入8个jar文件 commons-fileupload-1.2.2.jar   [文件上传相关包] commons-io-2.0.1.jar struts2-core-2.3.4.1.jar           [struts2核心功能包] xwork-

  • Struts2修改上传文件大小限制方法解析

    首先struts上传最大大小由两个地方决定.  · struts.multipart.maxSize决定整个post的form最大是多大,所以这个限制是最初的.默认大小是接近2M,在struts的default.properties中定义.  · fileuploadInterceptor中可以定义maximumSize最大文件大小. 最初定义在struts.xml中定义了没有生效,后来发现在工程中的struts.properties中已经设置过,所以后来被覆盖了,更改struts.proper

  • AjaxFileUpload+Struts2实现多文件上传功能

    本文重点给大家介绍AjaxFileUpload+Struts2实现多文件上传功能,具体实现代码大家参考下本文. 单文件和多文件的实现区别主要修改两点, 一是插件ajaxfileupload.js里接收file文件ID的方式 二是后台action是数组形式接收 1.ajaxFileUpload文件下载地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/ 2.引入jquery-1.8.0.min.js.ajaxFileUpload.js文件 3.文

  • 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.d

  • jQuery 遍历map()方法详解

    一.定义和用法 map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象. 二.语法 .map(callback(index,domElement)) 三.详细说明 由于返回值是 jQuery 封装的数组,使用 get() 来处理返回的对象以得到基础的数组 四.案例: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>

  • Struts2中ognl遍历数组,list和map方法详解

    一.简介 <s:iterator />可以遍历数据栈里面的任何数组,集合等等 在使用这个标签的时候有三个属性值得我们关注 1. value属性:可选的属性,value属性是指一个被迭代的集合,使用ognl表达式指定,如果为空的话默认就是ValueStack栈顶的集合. 2.id属性:可选属性, 是指集合元素的id 3.status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性方法: int getCount(); 迭代元素

  • Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在

    1.jquery grep()筛选遍历数组(可以得到反转的数组) // 1.jquery grep()筛选遍历数组(可以得到反转的数组) var array = [1,5,9,3,12,4,48,98,4,75,2,10,11]; var filterArray = $.grep(array,(currentValue) => { return currentValue > 10; }); console.log(`${filterArray}---${filterArray.length}`

  • vue.js 双层嵌套for遍历的方法详解, 类似php foreach()

    主要运用 template 标签,可相当于 php foreach() foreach(lists as $key){ //todo foreach($key.自定义字段 as k){ //todo } } <template v-for="key in lists" v-cloak> <tr> <td></td> <td ></td> <td ></td> <td ></

  • Python实现二叉树结构与进行二叉树遍历的方法详解

    二叉树的建立 使用类的形式定义二叉树,可读性更好 class BinaryTree: def __init__(self, root): self.key = root self.left_child = None self.right_child = None def insert_left(self, new_node): if self.left_child == None: self.left_child = BinaryTree(new_node) else: t = BinaryTr

  • 基于HashMap遍历和使用方法(详解)

    map的几种遍历方式: Map< String, String> map = new HashMap<>(); map.put("aa", "@sohu.com"); map.put("bb","@163.com"); map.put("cc", "@sina.com"); System.out.println("普通的遍历方法,通过Map.keySet

  • jquery 遍历数组 each 方法详解

    JQuery拿取对象的方式 $('#id') :通过元素的id $('tagName') : 通过元素的标签名 $('tagName tagName') : 通过元素的标签名,eg: $('ul li') $('tagName#id): 通过元素的id和标签名 $(':checkbox'):拿取input的 type为checkbox'的所有元素: Eg: <input type="checkbox" name="appetizers" value="

  • struts2中使用注解配置Action方法详解

    使用注解来配置Action可以实现零配置,零配置将从基于纯XML的配置转化为基于注解的配置.使用注解,可以在大多数情况下避免使用struts.xml文件来进行配置. struts2框架提供了四个与Action相关的注解类型,分别为ParentPackage.Namespace.Result和Action. ParentPackage:ParentPackage注解用于指定Action所在的包要继承的父包.该注解只有一个value参数.用于指定要继承的父包. 示例: 使用ParentPackage

  • java Map接口子类HashMap遍历与LinkedHashMap详解

    目录 一.概述 二.Map常用子类 三.Map接口中的常用方法 四.Map集合遍历键找值方式 五.Entry键值对对象 六.Map集合遍历键值对方式 七.HashMap存储自定义类型键值 八.LinkedHashMap 九.Map集合练习 十.JDK9对集合添加的优化 一.概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口

随机推荐