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已经把使用方法都写出来了!
分享到:
相关推荐
NULL 博文链接:https://jinguanghui880602.iteye.com/blog/1637943
NULL 博文链接:https://takeme.iteye.com/blog/1663239
主要介绍了Struts2 使用OGNL遍历map方法详解,具有一定参考价值,需要的朋友可以了解下。
主要介绍了Struts2中ognl遍历数组,list和map方法详解,需要的朋友可以参考下。
可以通过2种方法遍历HashMap <br>Map map = new HashMap(); <br>for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { <br> Map.Entry entry = (Map.Entry) iter.next(); <br> Object ...
NULL 博文链接:https://takeme.iteye.com/blog/1663039
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
Map里存放的是bean时 <br><logic:iterate id="destMap" name="srcMap"><br> <bean:define id="bean" name="destMap" property="value" /><br> <bean:write name="bean" property="name" /><br> </...
包含 strust2 s:iterator 一些常用情况的总结 如 遍历数组、list、map 并且list又分2种情况,map又分4种情况等。
\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}{...
51.5. java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 25 52. 数据连接池 25 52.1. 连接池的基本原理: 25 52.2. 连接池的工作机制 25 52.3. 建立连接池 26 ...
21、数组中有没有length()方法,String中有没有length()方法? 18 23、final, finally, finalize的区别。 18 24、‘==’和equals的区别? 18 25、JAVA中Object类中有哪些常用方法? 19 26、heap和stack有什么区别...
数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? 要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的...
5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema 5.5 设置类的包名 5.6 运行本章的范例...
5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema 5.5 设置类的包名 5.6 运行本章的范例...
5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema 5.5 设置类的包名 5.6 运行本章的范例...
5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema 5.5 设置类的包名 5.6 运行本章的范例...
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是...
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别? error 表示恢复...