spring_SSH整合之_架构的历史(架构整合JSP+Hibernate+Spring+Struts2+DTO)_9

48 篇文章 0 订阅
47 篇文章 0 订阅

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;
	}
}

   
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值