第六:马士兵Struts2 视频学习笔记之参数传递
在action中接受参数的方法一共有三种:
第一种,在url中传参,只用action 的属性。
比如想传入两个参数name和age,可将url写为:
http://jrwasob5iy4opd5:8080/Struts2-helloworld/stu!add?name=xiaojin&age=24
对应的action标签为:
action对应的类为:
可以看到,在类中有这两个参数,并且有getter和setter方法,这样,当执行这个action初始化该类时struts2会自动将url中的两个参数赋值。此时url中的参数和类中的参数一一对应,非常简单。
第二种方法: 使用DomainModel预模型
此时有一个单独的类保存属性,并且为每一个属性设置setter和getter方法。
比如有一个保存属性的类User,如下所示:
package com.xiaojin.action;
public class User {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
此时action的对应的类为:
package com.xiaojin.action;
import com.opensymphony.xwork2.ActionSupport;
public class Student2 extends ActionSupport{
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public User user;
public String add(){
System.out.println("name="+user.getName());
System.out.println("age="+user.getAge());
return "success";
}
}
可以发现,该类中一个属性类的对象的引用,当然,执行时不用我们初始化,struts2会帮我们自动初始化,需要注意的是,一定要记得为该对象的引用设置getter和setter方法,
此时的浏览器访问地址写为:
http://jrwasob5iy4opd5:8080/Struts2-helloworld/stu2!add?user.name=xiaojin&user.age=24
action标签映射为
<action name="stu2" class="com.xiaojin.action.Student2" method="add">
<result name="success">
/Hello.jsp
</result>
</action>
第三种:继承ModelDrive接口(不常用)