(三)Struts2接收参数的方法

Struts2接收参数的方法有3种分别是:

1.用Action的属性接收参数

2.用DomainModel接收参数

3.用ModelDriven接收参数


一:用Action的属性接收参数的例子如下:

UI页面代码如下:

<body>
使用action属性接收参数<a href="user/user!add?name=credo&age=25">添加用户</a>
	
</body>

Action代码如下:

package org.credo.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;

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

可以看到,在action种定义了name和age,并且get和set.

那么就可以直接进行传参,?name=credo&age=25

在action种将获取到这些值.


二.用DomainModel接收参数例子如下:

DomainModel是指域模型,就是model.最常用的一种.

UI代码:

<body> 
使用Domain Model接收参数<a href="user/user!add?user.name=credo&user.age=25">添加用户</a>


Action代码:

public class UserAction extends ActionSupport {
	
	private User user;
	
	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;
	}
	
}

DoMainModel代码:

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


像上面这样就是使用dimainmodel来接收参数.

如果说User只有name,age,但是页面有额外的其他参数,如sex等.

可以使用一个VO来接收参数.

public class UserVO {
	private String name;
	private String password;
	private String confirmingPassword;
	//GET AND SET
}

这里的 dimainmodel就是为了公用吧.VO针对点.


三.用ModelDriven接收参数,不常用

模型驱动这种方法并不常用.

UI代码:

<body> 
使用ModelDriven接收参数<a href="user/user!add?name=credo&age=25">添加用户</a>


Action代码:

注意:实现了ModelDriven.<User>,并且需要new一个User.

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


Model->User.java代码:

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


实现了ModelDriven.<User>,进入action,将给新new出的User的name和age进行自动赋值.这种方法不常用.如图所示:

(三)Struts2接收参数的方法_第1张图片



Over............

你可能感兴趣的:((三)Struts2接收参数的方法)