Action中接收参数的三种方法
1. 使用action的属性接收参数.(在action中定义和参数名相同的属性,生成getter/setter方法,在相应的方法中可以直接使用属性,action中的属性和url中的参数名是一一对应的,不过需要注意一点.参数的名称,应该是和方法名相同,而不是属性名!)
2. 使用DoMainModel接收参数(在action中定义实体类的引用,生成getter/setter方法,在传参数时,加上引用的方法名即可)
package com.test.actions;
import com.opensymphony.xwork2.ActionSupport;
import com.test.entitys.Users;
public class UserAction extends ActionSupport {
//实体类对象
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
private Users user;
public String add() throws Exception{
System.out.println("name="+user.getUserName());
System.out.println("card="+user.getUserCard());
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
访问路径为:
后台输出结果:
name="123"
card=222
3. 使用ModelDriven传递参数(在action中实现ModelDriven接口。注意,此时action中的实体对象就需要自己new出来了,在访问路径上,就不再需要user.userName了,直接userName就行了)
看它的源码:
/*
* Copyright (c) 2002-2007 by OpenSymphony
* All rights reserved.
*/
package com.opensymphony.xwork2;
/**
* ModelDriven Actions provide a model object to be pushed onto the ValueStack
* in addition to the Action itself, allowing a FormBean type approach like Struts.
*
* @author Jason Carreira
*/
public interface ModelDriven<T> {
/**
* Gets the model to be pushed onto the ValueStack instead of the Action itself.
*
* @return the model
*/
T getModel();
}
只有一个泛型的getModel方法。所以只需要实现这个方法,返回一个实体对象就行。访问路径,和使用action的属性访问一样。第二种使用的最多,但是个人比较喜欢第三种.