模型驱动
此种封装方式必须按照要求编写代码,要求如下:
1. 动作类必须实现ModelDriven 接口
2. 动作类中需要定义一个模型,并且必须实例化。
3. 动作类提供ModelDriven 接口中抽象方法的实现,返回模型对象。
4. 在实体类中提供与表单name属性取值一致的全局私有变量,并且提供set和get的方法
注意:
1. 使用模型驱动时,get/set方法不是必须的
2. 表单值封装找的是属性的get和set方法,把get和set去掉,首字母小写。
动作类:
/**
* 封装请求参数的第三种情况:
* 模型驱动
*
* 使用要求:
* 1.动作类必须实现 ModelDriven 接口,其中泛型提供的是模型对象
* 2.在动作类中需要定义一个模型对象,并且必须由我们自己来实例化
* 3.提供接口中抽象方法的实现,方法的返回值是我们定义的模型对象
* 模型驱动没有要求生成 get/set 方法
* @author Johnny.Chen
*
* 实际开发中三种方式都有应用场景。
* 在我们现阶段的学习中,以模型驱动作为重点。
*/
public class Demo3Action extends ActionSupport implements ModelDriven<User> {
private User user = new User();
@Override
public User getModel() {
return user;
}
public String demo3(){
System.out.println(user);
return SUCCESS;
}
}
jsp页面:
<%--表单 3:模型驱动 --%>
<form action="${pageContext.request.contextPath}/demo3.action" method="post">
用户名:<input type="text" name="name"/><br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="提交"/>
</form>
struts.xml
<action name="demo3" class="cn.action.Demo3Action" method="demo3">
<result name="success">/success.jsp</result>
</action>
到这我们已经能够将数据封装到一个Java对象中了,大部分我们会优先使用模型驱动的方式,因为
Struts2 内部有很多结果是围绕模型驱动设计的。
但如果页面向多个对象中封装,那么就需要使用属
性驱动的方式二了。
这些都是像某个对象中封装数据,那么如果 Action 中需要一个对象的集合呢?
又应该如何进行数据的封装呢?那么接下来我们来了解一下 Struts2中复杂类型数据的封装。