ModelDriven使用

来源:互联网 发布:linux环境变量设置命令 编辑:程序博客网 时间:2024/05/18 02:58

根据Action属性的不同将它分为两类:Field-Driven(属性驱动)Action和Model-Driven(模型驱动)Action。

一、Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性对应。
二、实现了modelDriven接口可以在action中直接获得例如User对象,它会将ObjectgetModel()取得的User放到ValueStack中。可以理解为将这个User的属性追加到Action中。它主要是作用是实现类似Struts的FormBean功能。

在struts2中,提供了一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象。

ModelDriven接口只有一个方法

public Object getModel(){
return this.object;
}


本人菜鸟一枚在第一次使用ModelDriven时,以为它可以把一个对象传过去,可是结果却大相径庭,并不是。

public class Reader {    private String stuNo;    private String stuName;    private String stuPassword;    private String stuDept;    public Reader(){    }    其余代码省略......
public class ReaderAction extends SuperAction implements ModelDriven<Reader> {    /**     *      */    private static final long serialVersionUID = 1L;    private Reader reader=new Reader();    ......    public Reader getModel() {        // TODO Auto-generated method stub        return this.reader;    }}

由于Reader中stuNo为数据库中的主键,在登录时是用stuName和stuPassword登录的,结果传过去的就只有这两个值,打印输出stuNo和stuDept都为空,后面要用到stuNo时就不行了.

0 0
原创粉丝点击