Struts2中Action吸收参数的要领主要有以下三种:
1.利用Action的属性吸收参数:(通过属性驱动式)
a.界说:在Action类中界说属性,建设get和set要领;
b.吸收:通过属性吸收参数,如:userName;
c.发送:利用属性名通报参数,如:user1!add?userName=Magci;
JSP:
<form action="sys/login.action" method="post"> <input type="text" name="username"> <input type="submit" value="submit"> </form>
Action:直接通过get、set要领获取。
public class sysAction extends ActionSupport{ private String username; public String login() throws Exception { System.out.println(username); return SUCCESS; } public String getUsername() { return username; } public void setUsername(String username) { this.username= username; } }
2.利用ModelDriven吸收参数:(模子驱动方法,必需要实现ModelDriven<T>接口。对付要传入多个model第二种方法不利便)
a.界说:Action实现ModelDriven泛型接口,界说Model类的工具(必需new),通过getModel要领返回该工具;
b.吸收:通过工具的属性吸收参数,如:user.getUserName();
c.发送:直接利用属性名通报参数,如:user2!add?userName=MGC
JSP:
<form action="sys/login.action" method="post"> <input type="text" name="username"> <input type="submit" value="submit"> </form>
Action:必需实现getModel() 要领
public class sysAction extends ActionSupport implements ModelDriven<User>{ private User user; public String login() throws Exception { System.out.println(getModel().getUsername()); return SUCCESS; } public User getModel() { if (null == user) { return user = new User(); } return user; } }
3.利用DomainModel吸收参数:(第三种规模模子方法可以完全不实现ModelDriven<T>,也可利用多个model工具的属性。)
a.界说:界说Model类,在Action中界说Model类的工具(不需要new),建设该工具的get和set要领;
b.吸收:通过工具的属性吸收参数,如:user.getUserName();
c.发送:利用工具的属性通报参数,如:user2!add?user.userName=MGC;
JSP:
<form action="sys/login.action" method="post"> <input type="text" name="user.username"> <input type="text" name="teacher.level"> <input type="submit" value="submit"> </form>
Action: 必需提供set要领
public class sysAction extends ActionSupport{ private User user; private Teacher teacher; public String login() throws Exception { System.out.println(user.getUsername()); System.out.println(teacher.getLevel()); return SUCCESS; } public void setUser(User user) { this.user = user; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } }