• Struts2之ModelDriven


    在加班的时候发现自己的一个知识盲点,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,一个对应表单提交的数据,另一个用与持久层。

     

  • 相关阅读:
    msbuild error
    windows 切换 默认 jdk 版本
    CI MSBuild env 2
    CI MSBuild env 1
    mstsc 修改密码
    MVC MSBuild
    gitolite
    OpenCV Visual Studio
    程序员!这5种让人郁闷的程序注释方式千万要避开!
    C语言基础丨运算符之条件运算符(七)
  • 原文地址:https://www.cnblogs.com/shihujiang/p/2571050.html
Copyright © 2020-2023  润新知