该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2005-04-25
引用 但我们应该这么理解: 1)ModelDriven模式并不能从代码上为我们节省工作量,就如moxie举的例子而言,不用ModelDriven模式代码更少 2)ModelDriven模式实现了真正的MVC,结构更加清晰 对第一点很同意,对第二点不敢苟同,什么叫ModelDriven模式实现了真正的MVC,结构更加清晰?一定要像struts一样有一个所谓的formbean才算是真正的MVC嘛?ModelDriven模式是提供的一种开发选择,和MVC扯得上什么本质关系嘛? 引用 Action has methods returning your model classes (myAction.getPet()) Fields in the view are fields of your model Views refer directly to your model (property='pet.name') Excellent because it allows model reuse 这才是正道! |
|
返回顶楼 | |
发表时间:2005-04-25
也正因为如此,事实上,你不实现ModelDriven接口,只要你遵循ognl的规则填充数据,在概念上,依然是ModelDriven的,决不是因为实现了ModelDriven接口Action才变成ModelDriven的。
|
|
返回顶楼 | |
发表时间:2005-07-06
hongsoft 写道 但我们应该这么理解: 1)ModelDriven模式并不能从代码上为我们节省工作量,就如moxie举的例子而言,不用ModelDriven模式代码更少 我不认为不用ModelDriven会节省多少代码。"name"和"user.name"相比较我还是选择后者,这样可读性更强。 hongsoft 写道 2)ModelDriven模式实现了真正的MVC,结构更加清晰 能使结构更加清晰这点我比较同意,而且把bean从action中分离出来,更利于代码的重用。不过有一些与action紧密相关的属性直接放在action里面也是可取的,看具体情况了。 |
|
返回顶楼 | |
发表时间:2005-07-06
楼主说的很清楚了啊。
崇拜一下楼主。 跟你学了不少东西。 但最佩服的是你对webwork的研究,并把他展示出来。 ![]() |
|
返回顶楼 | |
发表时间:2005-07-09
我觉得两者在技术上的是一致的,ModelDriven更OO一点,以VO的形式user.userName也更直观
|
|
返回顶楼 | |
发表时间:2005-07-09
ansern 写道 我觉得两者在技术上的是一致的,ModelDriven更OO一点,以VO的形式user.userName也更直观
你说反了,ModelDriven更不OO,强制引入了Web层的DTO,迫使本来OO的domain object在Web层被扁平的展开为Model DTO(类似Struts的ActionFormBean)。 在Webwork中,Model-Driven是一种非常不提倡使用的方式,而parameters方式已经非常好的能够让domain object工作在web层。webwork之所以还支持Model,其原因无非就是迁就那些从struts上面转变过来的开发人员,让他们可以以更熟悉的方式工作罢了。 |
|
返回顶楼 | |
发表时间:2005-07-12
假如我从business 传上来一个vo,那么在action中引用该vo(getvo).页面中模型驱动还是有些便利.
|
|
返回顶楼 | |
发表时间:2005-07-12
hellboys2008 写道 假如我从business 传上来一个vo,那么在action中引用该vo(getvo).页面中模型驱动还是有些便利.
这不是ModelDriven!还是ParametersDriven,你还是看看文档先搞清楚什么才是ModelDriven吧。 |
|
返回顶楼 | |
发表时间:2005-07-13
又看了一下后觉得,一种观点认为Action中用了Domain Object的就是ModelDriven,另一种观点认为Field-Driven 也可以用Domain Object,只有实现了com.opensymphony.xwork.ModelDriven接口的才是ModelDriven。
其实大家的倾向是一样的,都认为直接使用Domain Object,同时在页面中value="user.username"更直观;不同的只是这种形式的名称而已。 那就要看原文了,看分2种形式Action的原意是什么。如果按楼主说的,它就是ModelDriven,按robbin说的,它就是FieldDriven |
|
返回顶楼 | |
发表时间:2005-08-04
robbin 写道 hellboys2008 写道 假如我从business 传上来一个vo,那么在action中引用该vo(getvo).页面中模型驱动还是有些便利.
这不是ModelDriven!还是ParametersDriven,你还是看看文档先搞清楚什么才是ModelDriven吧。 下面这个算是对ModelDriven的官方定义了吧 引用 2 types of Actions possible: Model-driven Action has methods returning your model classes (myAction.getPet()) Fields in the view are fields of your model Views refer directly to your model (property='pet.name') Excellent because it allows model reuse Field-driven Action has fields of its own, which are fields in the view execute() collates fields and interacts with the model Views refer to action fields (property='name') Useful where form is not parallel to model 那么,“假如我从business 传上来一个vo,那么在action中引用该vo(getvo)“这不就是ModelDriven了吗? |
|
返回顶楼 | |