(三)Struts2接收参数的方法
Struts2接收参数的方法有3种分别是:
1.用Action的属性接收参数
2.用DomainModel接收参数
3.用ModelDriven接收参数
一:用Action的属性接收参数的例子如下:
UI页面代码如下:
使用action属性接收参数 添加用户
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代码:
使用Domain Model接收参数 添加用户
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代码:
使用ModelDriven接收参数 添加用户
Action代码:
注意:实现了ModelDriven.<User>,并且需要new一个User.
public class UserAction extends ActionSupport implements ModelDriven{ 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.首先提到的就是如果参数是中文,就不要用get,用post.
2.在struts.xml中:
不过好像貌似没用.