在加班的时候发现自己的一个知识盲点,Struts2中的ModelDriven.发现这个问题的过程是很有意思的,由于刚划分到新的部门,在使用新框架的时候发现前台jsp表单中的属性值传递到后台Action中之后被放在了一个在Action中定义好的对象里.就很奇怪了,它是如何实现的呢?接着就有了如下知识点的整理:

struts2中的Action根据其属性的不同可以分为两类:Filed-Driven Action(属性驱动)和Model-Driven Action(模型驱动).

<1>Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性对应.

<2>Model-Driven Action(模型驱动),在struts2中,提供了一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象.

ModelDriven接口只有一个方法   public Object getModel() {   return null;   } 该方法返回一个用于接收用户输入数据的对象模型,在这个模型对象中的属性可以直接通过(属性名)来访问,而不需要使用(对象名.属性名)这种格式来访问了,在action里也不需要对对象提供getter和setter方法了,但是必须要在action中进行new操作.

Filed-Driven Action和Model-Driven Action的区别:

(1)模型驱动的Action必须实现ModelDriven接口,而且要提供相应的泛型

(2)实现ModelDriven的getModel方法,其实就是简单的返回泛型的一个对象

(3)在Action提供一个泛型的私有对象,就是定义一个对象,并提供相应的getter与setter。

到底是用属性驱动和是模型驱动呢?

(1)请统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用模型驱动。

(2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,建议使用模型驱动,这样看起来代码会整洁.

(3)如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则,系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。

转载于:https://www.cnblogs.com/shihujiang/archive/2012/06/30/2571050.html

Struts2之ModelDriven相关推荐

  1. struts2之ModelDriven的使用

    Java代码  我们可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动)Action和Model-Driven(模型驱动)Action. 一.Field-Driven(属性 ...

  2. 前端传递参数,由于控制器层类实现了struts2的ModelDriven而产生的一个异常

    产生的异常如下: ognl.MethodFailedException: Method "setId" failed for object com.aliyun.pcitcAliy ...

  3. Struts2的学习 主要是知识点和基础知识

    Struts2框架的学习: servlet到底是什么? 是sun公司提供的动态web资源的技术 sun公司在其API中提供了一个servlet接口,若用户想要开发一个动态的web资源,即开发一个jav ...

  4. java spring 传大数据类型_Spring MVC前后端数据交互总结

    控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是ser ...

  5. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  6. Struts2 第9part 通过实现ModelDriven来接收参数

    2013年3月1日 元旦快乐 Struts2 第9part 通过实现ModelDriven来传参 这是Action的第三种接收参数的方法,比较少用.不过通过实现ModelDriven这个接口来实现Ac ...

  7. struts2 ModelDriven 和 Preparable 拦截器

    Struts2 运行流程图-1 ActionProxy 是 Action 的一个代理类,也就是说Action的调用是通过 ActionProxy 实现的,其实就是调用了ActionProxy.exec ...

  8. Struts2中的ModelDriven机制及其运用

    转自:http://blog.csdn.net/li_tengfei/article/details/6098145 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当 ...

  9. Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题

    Struts2中的ModelDriven机制及其运用.refreshModelBeforeResult属性解决的问题 参考文章: (1)Struts2中的ModelDriven机制及其运用.refre ...

最新文章

  1. js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
  2. 被小扎誉为整个科技界的愿景,元宇宙到底是什么?
  3. Bootstrap3 栅格系统-媒体查询
  4. 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
  5. 笔记-高项案例题-2018年上-质量管理
  6. 洛谷 P2888 [USACO07NOV]牛栏Cow Hurdles
  7. 四个你看后可能会影响你一生的故事
  8. 【button】 按钮组件说明
  9. Python开发利器之UliPad
  10. Python:如何获取一个用户名的组ID
  11. BigGAN学会“七十二变”:跟着视频模仿动物,看到啥就能变啥
  12. 2个简单shell脚本(if,while,case语句)
  13. C# 如何在空间运行时调整控件位置和大小
  14. .net HTML编码解析
  15. matlab 反应谱,matlab绘制反应谱
  16. 飞思卡尔单片机DZ60---时钟初始化
  17. 地缘剧本杀 (十一):疗伤(原创小说连载,内含语音)
  18. pandas分组计算平均值_Pandas之分组计算
  19. PWNHUB 一场新鲜赛事速达【六月内部赛】 web - login game + Misc - 伏羲八卦
  20. oracle系统报表开发工具,掌握七款实用报表开发工具,定制属于自己的报表

热门文章

  1. Linux学习 - 目录的权限操作
  2. swift 数组高阶使用(一)
  3. PHP之路——MySql查询语句
  4. linux下tomcat无法访问问题(换一种说法:无法访问8080端口)
  5. 36.centos 安装文泉驿字体
  6. 最新宣布:Intuit和微软公司就Intuit合作平台的最新版Windows Azure SDK扩大合作关系...
  7. linux挂载硬盘简书,linux|挂载硬盘及分区
  8. git查看linux内核log,linux查看用户、内核、CPU信息
  9. 现代神经网络要这么用才能创造智能
  10. 原来deepin部署环境还是那么简单(只不过要用root权限)