Struts2请求参数封装三——模型驱动
模型驱动需要Action类实现ModelDriven接口并实现 getModel()方法,该方法返回值必须是T类型的实例。
总之:三种请求参数的封装都需要struts2框架去执行params拦截器,第三种模型驱动还有需要modeldriven拦截器的执行
具体实现代码如下:
Action
public class HelloAction extends ActionSupport implements ModelDriven<User>{
private User user1=new User();
public String sayHello() {
System.out.println(user1);
return SUCCESS;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user1;
}
}
User实体类:
package com.myit.web.action;
public class User {
private String user;
private Integer age;
private String hobby;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "User [user=" + user + ", age=" + age + ", hobby=" + hobby + "]";
}
}
form:
<form action="${pageContext.request.contextPath}/hello" method="post">
user:<input type="text" name="user"/><br/>
age:<input type="text" name="age"><br/>
hobby: <input type="checkbox" value="Eating" name="hobby">Eating<input/>
<input type="checkbox" value="Sleeping" name="hobby">Sleeping<input/>
<input type="checkbox" value="Coding" name="hobby">Coding<input/><br/>
<input type="submit" value="submit">
</form>
struts.xml
<struts>
<constant name="strutrs.devMode" value="true"/>
<package name="p1" extends="struts-default">
<action name="hello" method="sayHello" class="com.myit.web.action.HelloAction" >
<result name="success">/success.jsp</result>
</action>
</package>
</struts>