精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-04-20
基本上是两个一起用.
|
|
返回顶楼 | |
发表时间:2005-04-20
我说的例子里,Model就是Customer
有什么不对吗? |
|
返回顶楼 | |
发表时间:2005-04-20
只能说我是对 Readonly的看法的意见,和你的问题有点距离
|
|
返回顶楼 | |
发表时间:2005-04-20
getModel() {
return new Customer(); } 就可以了,什么那么多属性? 你用过model driven没有。。。 我做法的不过是 getModel() { return clazz.newInstance(); } |
|
返回顶楼 | |
发表时间:2005-04-20
是你没有理解我的意思。
我是想说在这种情况下还是用Model-Driven好,也就是你的做法。 是针对readonly说Model-Driven没有用说的。 没有矛盾。 |
|
返回顶楼 | |
发表时间:2005-04-21
楼上的,你的关键问题在于,对什么叫做ognl不理解,进而对model-driven的理解也有偏差。
|
|
返回顶楼 | |
发表时间:2005-04-21
这和ognl有什么关系? 我只是讨论这种模式而已,在STRUTS里可以做同样的工作,我现在就是自己写了一个Class,自动把Request里的所有同名的属性赋给指定的Object,而现在是Webwork帮你做了。
从实际的角度来说,客户资料肯定会对应一个Customer类的,而你的CustomerAction里又重复定义了同样的Field,这显然是重复的。 有的时候还是自己写的东西灵活一些,比如我上次问的问题还没有回答:如果页面的内容包含了2个Model,该如何处理,getModel只能返回一个Object,如果我自己做的话,就可以分别往2个Object里注入数据。 |
|
返回顶楼 | |
发表时间:2005-04-21
我已经说了,你对什么叫ognl,什么叫valuestack,什么叫Action中的成员变量还没有搞清楚,你上面所说的,完全可以通过ognl和webwork的拦截器来解决,根本不需要实现ModelDriven接口。
|
|
返回顶楼 | |
发表时间:2005-04-21
我的确是刚开始准备用Webwork。原来用的是Struts所以自己写了那些东西,这也是我想用WW2 的原因之一(有些我想改进的,ww2已提供了)。
但你如何解释下面的WW2 的源码? public class ModelDrivenInterceptor extends AroundInterceptor { //~ Methods //////////////////////////////////////////////////////////////// protected void after(ActionInvocation dispatcher, String result); throws Exception { } protected void before(ActionInvocation invocation); throws Exception { Action action = invocation.getAction();; if (action instanceof ModelDriven); { ModelDriven modelDriven = (ModelDriven); action; OgnlValueStack stack = invocation.getStack();; stack.push(modelDriven.getModel(););; } } } rootsoso也说过, 引用 我试过可以的,OGNL可以自动的在中根据表单中user.userName这个field而在stack中转化为getUser().getUserName(),然后填充这个user的userName的属性的值
这也是我比较疑惑的地方,好像不是很严谨,不管你是怎么定义的,一股脑把数据都塞给你。 还有个问题,不知道你怎么看的,如果页面上的数据包含了2个Model的数据如何解决?建一个大的包含2个Model 属性的新Model?还有返回时的数据呢?更有可能多个Model了。 |
|
返回顶楼 | |
发表时间:2005-04-21
如果是前面提到的这种用法,我觉得和Model-Driven可以认为是一样的了,只是名称不同,在页面使用者角度上看都一样。
引用 java代码:
public class UserAction { private User user = new User(); public User getUser(){ return user; } // Your CRUD operation ....... } 然后在页面上使用: java代码: <form name="form1" action="userAction.action"> <input type="text" name="user.name"> <input type="password" name="user.password"> <input type="submit" value="OK"> </form> |
|
返回顶楼 | |