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>

转载于:https://www.cnblogs.com/kabi/p/5182118.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 数组下标6,这里为什么用equals会错,改==就不会?java入门第一集6.8获取数组下标课后练习...

源自&#xff1a;6-8 使用 foreach 操作数组这里为什么用equals会错&#xff0c;改就不会&#xff1f;java入门第一集6.8获取数组下标课后练习public class practice_1_6_8 {public static void main(String[] args) {int[] cored {11,22,33,44,55,66,77,88,99,00};System.out…

WC总结

去了人生中第一次全国WC&#xff0c;在四川绵阳南山中学举行&#xff0c;去了这么一次&#xff0c;感受颇多&#xff0c;不忍心白白地让时间流逝&#xff0c;于是写篇随笔记录一下。 全程&#xff0c;共计8天。 【第1天】 签到&#xff0c;拿餐票&#xff0c;看了看讲义&#x…

求n的阶乘的算法框图_算法|从阶乘计算看递归算法

欢迎点击「算法与编程之美」↑关注我们&#xff01;本文首发于微信公众号&#xff1a;"算法与编程之美"&#xff0c;欢迎关注&#xff0c;及时了解更多此系列文章。1理解递归“程序设计是实践计算机思维的重要手段”。程序设计的三种特征就是封装、继承和多态。而对于…

matlab画无量纲速度分布,麦克斯韦分布与概率论中典型分布的比较教学

大学物理和高中物理的衔接教学已经受到大学教师足够的重视和研究[1-3]。大学物理的数学基础是大学数学,特别是微积分和概率论。关于大学物理和大学数学课程的有效衔接和融汇教学国内也有初步的研究和实践[4-6]。本文笔者在河海大学多年的《大学物理》教学经历中明显感觉到学生对…

Python成长之路_装饰器

一、初入装饰器 1、首先呢我们有这么一段代码&#xff0c;这段代码假设是N个业务部门的函数 1 def f1(aaa): 2 print(我是F1业务) 3 if aaa f1: 4 return ok 5 6 def f2(aaa): 7 print(我是F2业务) 8 if aaa f2: 9 return ok 业务代码这里的…

python卸载_删除系统 Python 引发的惨案

这个案例告诉我们&#xff0c;千万不要动系统自带的 Python&#xff0c;Win系统除外文 | fanzhenyu 出处 | http://fanzhenyu.cn/由于无知&#xff0c;卸载 Ubuntu 自带的 python3 引发惨案&#xff0c;谨记&#xff0c;深刻反思。惨案由于实验需要使用 Python3.6 以上版本&…

php 删除特殊符号,利用PHP删除特殊符号

在编程的时候&#xff0c;不管你是偏向PHP等较为简单的编程&#xff0c;还是说想Java等更需要逻辑的强类型语言编程&#xff0c;都会或多或少地接触到对特殊符号的处理。特殊符号虽然显得不怎么起眼&#xff0c;但却极有可能会让程序实现不了初衷的目的运行效果。我们最常见到的…

gbdt 回归 特征重要性 排序_gbdt、xgb、lgb、cat面经整理——from牛客

注意&#xff0c;下文的原始的gbdt是以sklearn中的gbdt的实现为例子来阐述的&#xff0c;因为gbdt的改进版本有很多&#xff0c;为了叙述方便&#xff0c;使用这个最为人所知的实现来描述。你有自己用过别的模型然后调参之类的吗&#xff1f;能说一下基本的调参流程吗&#xff…

深入C#类的方法

构造函数 example1&#xff1a; static void Main(string [] args) {SE engineernew SE();engineer.Age25;enginner.Name"艾边成";//省略其他属性赋值操作Console.WriteLine(engineer.SayHi());} 我们知道要使用类的属性和方法&#xff0c;首先要对类进行实例化&…

在linux上处理base64加密和解密

http://snailwarrior.blog.51cto.com/680306/142472/ 2.从标准输入读取文件内容&#xff0c;base64编码并打印到标准输出 [rootlocalhost test]# base64snailwarriorc25haWx3YXJyaW9yCg 我是输入snailwarrior&#xff0c;回车&#xff0c;然后按CtrlD结束文件输入的。 3、对字符…

python3迭代器是什么,python3 迭代器

1. 想要了解 迭代器 &#xff0c;需要先 知道什么是 可迭代对象。简单点说&#xff0c;可以直接作用于for循环的对象&#xff0c;称之为可迭代对象(Iterable)。1.png可迭代对象&#xff0c;一定实现了__iter__方法。isinstance內建函数&#xff0c;可以判断一个对象是否是某个类…

边缘检测robert原理_机器视觉尺寸检测基础

尺寸测量/边缘检测利用边缘检查的尺寸检查是图像传感器的最新应用趋势。图像传感器可以将检查对象在平面上表现出来&#xff0c;通过边缘检测,测算位置、宽度、角度等。下面将按照处理过程来介绍边缘检查的原理。理解原理有助于优化检查设置。除此之外&#xff0c;还将介绍一些…

linux 查杀php木马,linux上php木马、后门查杀总结

Web Server(Nginx为例)1、为防止跨站感染&#xff0c;要做虚拟主机目录隔离(我是直接利用fpm建立多个程序池达到隔离效果)2、上传目录、include类的库文件目录要禁止代码执行(Nginx正则过滤)3、path_info漏洞修正&#xff1a;if ($request_filename ~* (.*)\.php) {set $php_ur…

Telnet 爆破 kail_【UZI|SN输给DWG后,AD选手被爆破,弹幕刷了半小时Uzi】英雄联盟S10于10月31日终于正式落幕了_科技资讯...

『联盟玩科技摘要_UZI|SN输给DWG后&#xff0c;AD选手被爆破&#xff0c;弹幕刷了半小时Uzi』在SN输给了DWG之后&#xff0c;最大的背锅选手也出来了&#xff0c;AD选手huanfeng成为了这次的背锅选手&#xff0c;毕竟在最重要的第三把比赛中&#xff0c;huanfeng的EZ全程都没有…

20160205.CCPP体系详解(0015天)

程序片段(01):01.杨辉三角.c 内容概要:杨辉三角 #include <stdio.h> #include <stdlib.h>#define N 10//01.杨辉三角: // 1.图形转换:将标准杨辉三角采用标准数组进行模拟 // 2.确定标准数组的图形描述关系: // (1).数组当中第一列的所有元素以及正对角线的…

no.7_qzhai 开心版_开心宝贝GM版下载-开心宝贝GM版安卓下载

开心宝贝GM版是一款经典Q萌风格的仙侠冒险ARPG手游。游戏画面精致唯美&#xff0c;角色刻画活灵活现&#xff0c;动态特效表达细致&#xff0c;原创的剧情故事跌宕起伏&#xff0c;为玩家们奉上了一场殿堂级的视听双重盛宴。Q萌仙侠世界任你探索&#xff0c;快来九妖下载体验一…

魔力耳朵java工作,魔力耳朵

热爱教育、英语流利的小伙伴&#xff0c;小兔子邦妮在等你&#xff01;外教管理岗位职责&#xff1a;1. 协助北美外教的管理&#xff0c;协调外教上课时间&内容&#xff0c;对外教进行平台使用和教学大纲的培训&#xff0c;并在线监督外教上课效果&#xff0c;对突发情况进…

android ContentResolver详解

查询出来的cursor的初始位置是指向第一条记录的前一个位置的cursor.moveToFirst&#xff08;&#xff09;指向查询结果的第一个位置。一般通过判断cursor.moveToFirst()的值为true或false来确定查询结果是否为空。cursor.moveToNext()是用来做循环的&#xff0c;一般这样来用&a…

咋安装redhatlinux镜像在哪下载_Windows7正版系统安装教程

大家好&#xff0c;今天分享一篇来自装机吧官网(zhuangjiba.com)的图文教程。操作系统在整个计算机系统中具有承上启下的地位。但由于上网的操作系统鱼龙混杂的&#xff0c;很多朋友是不知道在哪下载Windows7正版系统的&#xff0c;所以贴心的小编就整理了这个Windows7正版系统…

termux php 出错,android上的终端——termux

前言在安卓也可以体验终端命令的快感&#xff0c;甚至还可以操作安卓基础硬件。基本命令termux支持apt软件管理和pkg软件管理&#xff0c;首次安装时&#xff0c;系统会默认给出pkg的安装及更新命令&#xff0c;对此不做过多赘述&#xff0c;用过linux的可以直接上手。更换国内…