Struts2中使用Action的类型重定向,jsp页面取不到list值
package com.bjsxt.registration.action;
import java.util.List;
import org.springframework.context.ApplicationContext;
import com.bjsxt.registration.model.User;
import com.bjsxt.registration.service.UserManager;
import com.bjsxt.registration.vo.UserRegisterInfo;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements
ModelDriven<UserRegisterInfo> {
private UserRegisterInfo info;
private UserManager userManager;
private List<User> users;
public UserRegisterInfo getInfo() {
return info;
}
public void setInfo(UserRegisterInfo info) {
this.info = info;
}
public UserManager getUserManager() {
return userManager;
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public String execute() throws Exception {
User user = new User();
user.setUsername(info.getUsername());
user.setPassword(info.getPassword());
if (userManager.exists(user)) {
return "FAIL";
}
userManager.add(user);
return "SUCCESS";
}
public UserRegisterInfo getModel() {
return info;
}
public String list() {
this.users = this.userManager.getUsers();
return "LIST";
}
}
<?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>
<!-- 指定打开.jsp页面默认编码 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 与spring集合时,指定由spring负责action对象的创建(自动装配) -->
<constant name="struts.objectFactory.spring.autoWire" value="type" />
<!-- 开发模式下使用,这样可以打印出理详细的错误信息 -->
<constant name="struts.dewMode" value="true" />
<package name="registration" namespace="/bjsxt" extends="struts-default">
<action name="user_*" class="com.bjsxt.registration.action.UserAction"
method="{1}">
<result name="SUCCESS">/registSuccess.jsp</result>
<result name="FAIL">/registFail.jsp</result>
<!-- 使用重定向jsp页面取不到list值 -->
<!-- <result name="LIST" type="redirect">/userlist.jsp</result> -->
<result name="LIST">/userlist.jsp</result>
</action>
</package>
</struts>
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<table align="center" border="1">
<tr>
<th>用户名</th>
<th>密码</th>
</tr>
<s:iterator value="users">
<tr>
<td><s:property value="username" /></td>
<td><s:property value="password" /></td>
</tr>
</s:iterator>
</table>
<s:debug></s:debug>
</body>
</html>
=======================================================
DTO= Data Transfer Object
数据传输对象
VO = Value Object
值对象
=======================================================
界面原型
实体类package com.bjsxt.registration.vo;
public class UserRegisterInfo {
private String username;
private String password;
private String password2;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword2() {
return password2;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
}
package com.bjsxt.registration.action;
import com.bjsxt.registration.model.User;
import com.bjsxt.registration.service.UserManager;
import com.bjsxt.registration.vo.UserRegisterInfo;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
@SuppressWarnings("serial")
// 如果要使用模型驱动,得实现ModelDriven里面的getModel(DTO)
// >>>它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动
// >>>(ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口,使用它
// >>>的getModel()方法来通知Struts2要注入的属性类型,并且声明属性时一定要实例化,但不需get,
// >>>set方法。
public class UserAction extends ActionSupport implements
ModelDriven
{
private UserRegisterInfo info;
private UserManager userManager;
public UserManager getUserManager() {
return userManager;
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
public UserRegisterInfo getInfo() {
return info;
}
public void setInfo(UserRegisterInfo info) {
this.info = info;
}
@Override
public String execute() throws Exception {
User user = new User();
user.setUsername(info.getUsername());
user.setPassword(info.getPassword());
if (userManager.exists(user)) {
return "FAIL";
}
userManager.add(user);
return "SUCCESS";
}
public UserRegisterInfo getModel() {
return info;
}
}