参数对象Struts2中Action的属性接收参数

题记:写这篇博客要主是加深自己对参数对象的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。

    Action中三种传递并接受参数:

    1、  在Action添加成员属性接受参数

    例如请求的URL地址:

http://localhost:8080/Struts2_0700_ActionAttrParamInput/user/user!add?name=a&age=8

    其中传递了两个参数:name和age,其值分别为:a、8,此Action执行的是add()方法。

    那我们只要在user这个Action对象中添加这两个成员属性并生成set、get方法。

public class UserAction extends ActionSupport {
	
	private String name;
	private int age;
	
	public String add() {
		System.out.println("name=" + name);
		System.out.println("age=" + age);
		return SUCCESS;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}	
}

    2、域模型(Domain Model)

    就是利用对象域来进行传递和接受参数

    例如请求的URL地址:

http://localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?user.name=a&user.age=8

    其中,访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”

   利用对象域user来传递参数,为对象的属性赋值(user.name=a user.age=8)

   注:须要一个对象user 并且这个对象须要有两个成员属性,且拥有get、set方法。

   然后在Action中添加一个User对象的成员属性。并且有get、set方法,就能够了。

//User对象
public class User {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
    每日一道理
心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
  心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
//Action类
public class UserAction extends ActionSupport {	
	private User user;
	//private UserDTO userDTO;
	public String add() {
		System.out.println("name=" + user.getName());
		System.out.println("age=" + user.getAge());
		return SUCCESS;
	}

	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}

    3、ModelDriven接收参数

    使Action实现com.opensymphony.xwork2.ModelDriven<User>(在实现接口时须要应用泛型,否则应用时须要转型)中利用其getModel()方法返回对象模型,从而获得传入的参数。

    例如URL如下:

http://localhost:8080/Struts2_0900_ModelDrivenParamInput/user/user!add?name=a&age=8

    其:访问的是namespace=”/user” action的name=”user” Action所执行的方法method=”add”,其传入了两个参数:name=a,age=8。

    参数被传入至Action后,会被ModelDriven对象根据参数名自动赋值给User对象响应的属性而生成User对象,并且由getModel()返回。那么我们在Action中就能够利用这个对象了。

    注意:传入的参数名须要与对象模型中的成员属性一致。

    对象模型User:

public class User {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

    Action对象

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements ModelDriven<User>{
	private User user = new User();
	public String add() {
		System.out.println("name=" + user.getName());
		System.out.println("age=" + user.getAge());
		return SUCCESS;
	}
	@Override
	public User getModel() {
		return user;
	}	}

文章结束给大家分享下程序员的一些笑话语录: PC软件体积大,是因为一个PC软件功能往往较多,能够满足你一个方面的需求,而一个iphone软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。

--------------------------------- 原创文章 By
参数和对象
---------------------------------

posted @ 2013-06-22 23:27  xinyuyuanm  阅读(414)  评论(0编辑  收藏  举报