Struts2 接受参数的问题:
我们采取一下三种方式接收参数:
一,利用Action类的属性来封装参数
在User类中,定义属性。jsp直接请求这个Action
1.定义一个User类 。如图:
在form.jsp页面中进行简单的测试 。具体代码如下:
注意: 表单里 input 里的name属性名 一定要与User 里的属性名一致。
将Struts2 进行如下配置:
测试:
控制台接受到数据:
由于第一种方法 User类中定义的属性太多了就显得特别麻烦。于是引进第二种办法:UserAction类中 定义一个User 类 直接对User类实现get set方法。
二.利用DomainModel接受参数:
- 定义一个UserAction类:
public class UserAction {
private User user;
public User getUser() {
System.out.println("getUSer......");
return user;
}
public void setUser(User user) {
System.out.println("setUSer......");
this.user = user;
}
public void test() {
System.out.println(this.user);
}
}
注意:此时input标签的name 属性也有所改变:
运行结果:
根据运行结果:可以看出: 先进行getUser的方法 如果值为null再进行setUser 方法 。
由于 第二种方法 会让jsp中的表单命名显得复杂 引进第三种方法 通过实现ModelDriven接口
三,利用ModelDriven 接受参数:
将UserAction 实现ModelDriven 接口 该接口必须重写getModel()方法。通过getModel创建User对象。
public class UserAction implements ModelDriven{
private User user;
@Override
public Object getModel() {
if(this.user==null){
System.out.println("getModel....");
this.user=new User();
}
return this.user;
}
public void test() {
System.out.println(this.user);
}
}
注意form 表单 :name属性 没有改变。
运行结果:
通过getModel()来创建对象,接受数据。