该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间: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这个接口为鸡肋啊!! |
|
返回顶楼 | |
发表时间: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这个接口为鸡肋啊!! 用好了确实很方便…… |
|
返回顶楼 | |
发表时间:2005-08-31
我的理解是管他什么driven.连传个参数 也谈到 什么driven,是不是drive的太多了。
这2者的区别就是:implements了ModelDriven并且加了model-driven 这个 intercepter就可以在页面中直接用userName, 而不用 user.userName |
|
返回顶楼 | |
发表时间:2006-03-21
呵呵,今天才看到这篇文章,前几天开始研究webwork的,看的也是搂住发布的doc。也是对这个Field driven和model driven比较疑惑,感觉不需要声明ModelDriven接口也是可以使用modelDriven模式的。原来真是这样。
|
|
返回顶楼 | |
发表时间:2006-03-21
用 Idea后
ModelDriven 比 Field-Driven 方便多了 不是很清晰 ModelDriven Field-Driven ActionContext.getContext().getParameters(); 这三个用哪个好 个人偏向ActionContext.getContext().getParameters(); DAO 里不用在方法上传参数了 就是值是数组 |
|
返回顶楼 | |
发表时间:2006-03-22
确实不用实现ModelDrivern接口也能完成相同功能的操作,但用getModel()的话,应该会获得一个更加清楚结构表达
|
|
返回顶楼 | |
发表时间:2006-03-23
还是区别的,webwork里的ModelDriven接口还是在后面做了不少事情,不清楚的去search一下webwork以及work源码(UltraEdit 的多文件查找),有几个类是用到这个接口的就知道了。包括在资源文件的读取,参数的填充
|
|
返回顶楼 | |
发表时间: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 这个对象。 先写上问题来。等我查了源代码看看流程怎么样在详细解释解释。 |
|
返回顶楼 | |
发表时间:2006-03-28
这么改public User getUser(){
if (this.user == null) this.user=new User(); return this.user; } 估计框架是先get到user对象,然后再设置。 |
|
返回顶楼 | |
发表时间: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第二个以后才会用 |
|
返回顶楼 | |