有时可能需要将一些数据封装到集合中(List,Map),这就需要了将复杂数据封装到集合的技术:
具体见代码与注解。
struts.mxl
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- 全局result -->
<global-results>
<result name="success">/main.html</result>
</global-results>
<!-- 不写method直接执行action类中的execute方法 -->
<action name="demoAction" class="web.action.ActionDemo1"/>
<action name="userAction_*" class="web.action.UserAction" method="{1}">
<result name="msg">/retMsg.jsp</result>
</action>
<!-- 演示属性驱动 -->
<action name="FieldDrivenDemo" class="web.action.FieldDrivenDemo"/><!-- 默认方法 -->
<action name="FieldDrivenDemo" class="web.action.FieldDrivenDemo" method="demo1"/><!-- 指定方法 -->
<!-- 演示模型驱动 -->
<action name="ModelDrivenDemo" class="web.action.ModelDrivenDemo" method="demo" />
<action name="FieldDrivenDemo2" class="web.action.FieldDrivenDemo2" />
<!-- 将数据封装到list中 -->
<action name="CollectionActionDemo" class="web.action.CollectionActionDemo"/>
<!-- 将数据封装到map中 -->
<action name="CollectionActionDemo2" class="web.action.CollectionActionDemo2"/>
</package>
</struts>
请求页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<h3>将请求数据封装到list集合中</h3>
<form action="${ pageContext.request.contextPath }/CollectionActionDemo"
method="post">
<h5>用户1</h5>
姓名:<input type="text" name="userList[0].username" /><br />
密码:<input type="password" name="userList[0].password" /><br />
<h5>用户2</h5>
姓名:<input type="text" name="userList[1].username" /><br />
密码:<input type="password" name="userList[1].password" /><br />
<h5>用户3</h5>
姓名:<input type="text" name="userList[2].username" /><br />
密码:<input type="password" name="userList[2].password" /><br />
<input type="submit" value="提交" />
</form>
<br/>
<h3>将请求数据封装到map集合中</h3>
<form action="${ pageContext.request.contextPath }/CollectionActionDemo2"
method="post">
<h5>用户1</h5>
姓名:<input type="text" name="map['user1'].username" /><br />
密码:<input type="password" name="map['user1'].password" /><br />
<h5>用户2</h5>
姓名:<input type="text" name="map['user12'].username" /><br />
密码:<input type="password" name="map['user12'].password" /><br />
<h5>用户3</h5>
姓名:<input type="text" name="map['user13'].username" /><br />
密码:<input type="password" name="map['user13'].password" /><br />
<input type="submit" value="提交" />
</form>
</body>
</html>
封装到list的action类
package web.action;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.javafx.collections.MappingChange.Map;
import domain.User;
public class CollectionActionDemo extends ActionSupport {
/**
* 使用struts2框架将请求数据封装到集合中
* 一、list集合
* 1.需要定义集合指定泛型,并提供get、set函数
* 2.页面需要作相应的修改
* 姓名:<input type="text" name="userList[0].username" /><br />
密码:<input type="password" name="userList[0].password" /><br />
*
*/
private static final long serialVersionUID = -8465672731791860000L;
//定义list集合指定泛型,并提供get、set函数
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
//正常使用list
@Override
public String execute() throws Exception {
for (User user : userList) {
System.out.println(user);
}
return NONE;
}
}
封装到map的action类
package web.action;
import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import domain.User;
public class CollectionActionDemo2 extends ActionSupport {
private static final long serialVersionUID = 6361656316275107452L;
/**
* 使用struts2框架将请求数据封装到集合中
* 二、map集合
* 1.需要定义集合指定泛型,并提供get、set函数
* 2.页面需要作相应的修改
*
*
*/
//定义map集合指定泛型,并提供get、set函数
private Map<String, User> map;
public Map<String, User> getMap() {
return map;
}
public void setMap(Map<String, User> map) {
this.map = map;
}
@Override
public String execute() throws Exception {
System.out.println(map);
return NONE;
}
}