论坛首页 Java企业应用论坛

纠正WebWork2的Model-driven(模型驱动)Action

浏览 34449 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-08-07  
小弟初学webwork,以下是对model-driven和field-driven的个人理解,请大家拍砖:
Action实现modeldriven接口,为model-driven,但页面表单没有EL,因为model对象已经放进 ognl的 valuestack里;
Action不实现model-driven,页面表单只有EL时,Action里有model对象,为model-driven;页面表单没有EL时,Action里为property,为field-driven;
Action里即有EL,又有不带EL的input,Action里即有model对象,又有property,为model-driven和field-driven的结合使用。
感觉modeldriven这个接口为鸡肋啊!!
0 请登录后投票
   发表时间:2005-08-09  
So懒 写道
小弟初学webwork,以下是对model-driven和field-driven的个人理解,请大家拍砖:
Action实现modeldriven接口,为model-driven,但页面表单没有EL,因为model对象已经放进 ognl的 valuestack里;
Action不实现model-driven,页面表单只有EL时,Action里有model对象,为model-driven;页面表单没有EL时,Action里为property,为field-driven;
Action里即有EL,又有不带EL的input,Action里即有model对象,又有property,为model-driven和field-driven的结合使用。
感觉modeldriven这个接口为鸡肋啊!!

用好了确实很方便……
0 请登录后投票
   发表时间:2005-08-31  
我的理解是管他什么driven.连传个参数 也谈到 什么driven,是不是drive的太多了。
这2者的区别就是:implements了ModelDriven并且加了model-driven 这个 intercepter就可以在页面中直接用userName, 而不用 user.userName
0 请登录后投票
   发表时间:2006-03-21  
呵呵,今天才看到这篇文章,前几天开始研究webwork的,看的也是搂住发布的doc。也是对这个Field driven和model driven比较疑惑,感觉不需要声明ModelDriven接口也是可以使用modelDriven模式的。原来真是这样。
0 请登录后投票
   发表时间:2006-03-21  
用 Idea后

ModelDriven 比 Field-Driven 方便多了

不是很清晰
ModelDriven
Field-Driven
ActionContext.getContext().getParameters();
这三个用哪个好

个人偏向ActionContext.getContext().getParameters();
DAO 里不用在方法上传参数了
就是值是数组
0 请登录后投票
   发表时间:2006-03-22  
确实不用实现ModelDrivern接口也能完成相同功能的操作,但用getModel()的话,应该会获得一个更加清楚结构表达
0 请登录后投票
   发表时间:2006-03-23  
还是区别的,webwork里的ModelDriven接口还是在后面做了不少事情,不清楚的去search一下webwork以及work源码(UltraEdit 的多文件查找),有几个类是用到这个接口的就知道了。包括在资源文件的读取,参数的填充
0 请登录后投票
   发表时间:2006-03-28  
老贴顶上来了。遇到个小tip.
public class User{
private String name;
private int age;
.......
get 
set
...
}

public class MyAction implements Action{
private User user=new User();;
public void setUser(User user);{
    this.user=user;
}
}



当我url?user.name=zzz&user.age=25  请求是,居然age并不能正确附值。
当你明确定义
public User getUser();{
return this.user;
}

这样,user对象才能正确初始化。
但当你在Action中定义
private User user=null;

时,代码又会出错。晕晕,webwork2.17还有这问题。它需要用get方法定位Action中定义的对象,但当user=null;时,它不负责new 这个对象。

先写上问题来。等我查了源代码看看流程怎么样在详细解释解释。
0 请登录后投票
   发表时间:2006-03-28  
这么改public User getUser(){
if (this.user == null) this.user=new User();
return this.user;
}
估计框架是先get到user对象,然后再设置。
0 请登录后投票
   发表时间:2006-03-28  
dwangel 写道
这么改public User getUser(){
if (this.user == null) this.user=new User();
return this.user;
}
估计框架是先get到user对象,然后再设置。

不用改。仔细看。
public User getUser();{
return this.user;
}

是没有问题的。
user.name不会用getUser()方法的。user.age第二个以后才会用
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics