`
nesta2001zhang
  • 浏览: 68969 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 遍历Map的N中方法

 
阅读更多
struts2 遍历Map的N中方法
2011-01-09 22:24

struts2 遍历Map的N中方法

主要针对以下几种情况的Map:
 private Map<String, String> strMap = new HashMap<String, String>();
 private Map<String, Person> perMap = new HashMap<String, Person>();

 private Map<String, String[]> strArryMap = new HashMap<String, String[]>();
 private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();

下面给出一个示例
1).ExpressMapAction.java
package com.expre.struts2.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.expre.struts2.bean.Person;
import com.expre.struts2.bean.Phone;
import com.opensymphony.xwork2.ActionSupport;

public class ExpressMapAction extends ActionSupport {
 private static final long serialVersionUID = -4251480679223607716L;

 private Map<String, String> strMap = new HashMap<String, String>();

 private Map<String, Person> perMap = new HashMap<String, Person>();

 private Map<String, String[]> strArryMap = new HashMap<String, String[]>();

 private Map<String, List<Person>> perLstMap = new HashMap<String, List<Person>>();
 
 //get&set方法,这里都省略了
 ...................

 @Override
 public String execute() throws Exception {

  // 值为字符串
  strMap.put("first", "zxx");
  strMap.put("second", "lsx");
  strMap.put("third", "wxh");

  // 值为javabean对象
  Person person = new Person("001", "zxx", 22);
  person.setPhone(new Phone("apple", 18957157189L));

  perMap.put("one", person);

  person = new Person("002", "lsx", 25);
  person.setPhone(new Phone("HTC", 18957157187L));
  perMap.put("two", person);

  // 数组处理
  strArryMap.put("arr1", new String[] { "1", "310000", "hz" });
  strArryMap.put("arr2", new String[] { "2", "310001", "xh" });
  strArryMap.put("arr3", new String[] { "3", "310002", "sc" });
  
  //list对象处理
  List<Person> list=new ArrayList<Person>();  
  list.add(new Person("001", "zxx", 22));
  list.add(new Person("002", "lsx", 25));
  perLstMap.put("one", list);
  
  list=new ArrayList<Person>();  
  list.add(new Person("003", "wlx", 26));
  list.add(new Person("004", "hzx", 28));
  perLstMap.put("two", list);

  return "result";
 }
}

2).struts.xml
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    " http://struts.apache.org/dtds/struts-2.0.dtd ">
<struts>
 <package name="express" extends="struts-default" namespace="/exp">
  <action name="expressMap" class="com.expre.struts2.action.ExpressMapAction">
   <result name="result">/jsp/strMap.jsp</result>
  </action>
 </package>
</struts>

3.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns=" http://java.sun.com/xml/ns/j2ee " xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
 xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ">
 <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 <welcome-file-list>
  <welcome-file>/first.jsp</welcome-file>
 </welcome-file-list>
</web-app>

4).strMap.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
 <body>
  <ul>
   <li>访问Map:<s:property value="strMap"/></li>
   <li>访问Map中某个元素:
    <s:property value="strMap.first"/> |
    <s:property value="strMap['second']"/> |
    <s:property value="strMap[\'third\']"/>
   </li>
   <li>访问Map中所有的key:<s:property value="strMap.keys"/></li>
   <li>访问Map中所有的value:<s:property value="strMap.values"/></li>
   <li>访问容器的大小:
    <s:property value="strMap.size()"/> |
    <s:property value="strMap.size"/>//这是map特别的地方
    </li>
   
    <li>迭代循环取值,最简单
     <s:iterator value="strMap" id="entry">
       <s:property value="#entry"/>{
        key: <s:property value="key"/> 
      value:<s:property value="value"/>}|
       </s:iterator>
      </li>
     
    <li>迭代循环取值
     <s:iterator value="strMap.keySet()" id="key">
       <s:property value="key"/>或<s:property value="#key"/>:
           <s:if test="strMap[#key]!=null"> 
            <s:property value="strMap.get(#key)"/> |
           </s:if>
       </s:iterator>
      </li>
     
      <li>迭代循环取数组值
     <s:iterator value="strMap" id="entry">
       <s:property value="#entry"/>{
       <s:property value="value[0]"/> 
       <s:property value="value[1]"/>  |
       <s:property value="value[2]"/>  }
       </s:iterator>
      </li>
     
      <li>迭代循环取对象值,最直接:
       <ul>
       <s:iterator value="perMap" id="entry">   
        <li>
          <s:property value="#entry"/>  {
         ID:<s:property value="value.ID"/> 
         Name:<s:property value="value.name"/> 
         Age:<s:property value="value.age"/>  }|
         </li>
       </s:iterator>
       </ul>
      </li>
     
      <li>迭代循环取对象的属性值
    <s:iterator value="perMap.keySet()" id="key">
          <s:property value="#key"/>:
           <s:iterator value="perMap.get(#key)">
               <s:property value="ID"/>
               <s:property value="name"/>
               <s:property value="phone.name"/>
           </s:iterator>|
      </s:iterator>
      </li>
     
      <li>稍复杂的迭代
       <s:iterator value="perLstMap" id="entry">  
        <s:set name="total" value="#entry.value.size"/>  
        <s:iterator value="#entry.value" status="s">  
           <s:if test="#s.first">
            <s:property value="#entry.key"/>:共${total}条
           </s:if>   {
           <s:property value="ID"/>  |
           <s:property value="name"/>   |
           <s:property value="age"/>
            };
        </s:iterator>  
     </s:iterator> 
   </li>
   </ul>
 </body>
</html>

5).通过url: http://localhost:8080/struts2Jsp/exp/expressMap.action 访问就会看到输出!

别的不多说,strMap.jsp已经把使用方法都写出来了!

分享到:
评论

相关推荐

    struts2中的map遍历

    NULL 博文链接:https://jinguanghui880602.iteye.com/blog/1637943

    Struts2 iterator 标签遍历 Map,List,数组(三十六)

    NULL 博文链接:https://takeme.iteye.com/blog/1663239

    Struts2 使用OGNL遍历map方法详解

    主要介绍了Struts2 使用OGNL遍历map方法详解,具有一定参考价值,需要的朋友可以了解下。

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

    主要介绍了Struts2中ognl遍历数组,list和map方法详解,需要的朋友可以参考下。

    怎样遍历一个HashMap?

    可以通过2种方法遍历HashMap &lt;br&gt;Map map = new HashMap(); &lt;br&gt;for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { &lt;br&gt; Map.Entry entry = (Map.Entry) iter.next(); &lt;br&gt; Object ...

    Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)

    NULL 博文链接:https://takeme.iteye.com/blog/1663039

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    logic:iterate标签当遍历的collection为Map时的使用

    Map里存放的是bean时 &lt;br&gt;&lt;logic:iterate id="destMap" name="srcMap"&gt;&lt;br&gt; &lt;bean:define id="bean" name="destMap" property="value" /&gt;&lt;br&gt; &lt;bean:write name="bean" property="name" /&gt;&lt;br&gt; &lt;/...

    strust2 s:iterator常用情况个人总结

    包含 strust2 s:iterator 一些常用情况的总结 如 遍历数组、list、map 并且list又分2种情况,map又分4种情况等。

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    java面试题

    51.5. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 25 52. 数据连接池 25 52.1. 连接池的基本原理: 25 52.2. 连接池的工作机制 25 52.3. 建立连接池 26 ...

    Java面试宝典2020修订版V1.0.1.doc

    21、数组中有没有length()方法,String中有没有length()方法? 18 23、final, finally, finalize的区别。 18 24、‘==’和equals的区别? 18 25、JAVA中Object类中有哪些常用方法? 19 26、heap和stack有什么区别...

    JAVA面试题最全集

    数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? 要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例...

    java 面试题 总结

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是...

    超级有影响力霸气的Java面试题大全文档

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别?  error 表示恢复...

Global site tag (gtag.js) - Google Analytics