锁定老帖子 主题:warp,想说爱你不容易
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-27
话说这个guice可是完全使用annotation进行依赖注射、可通过官方那22页的说明文档楞是怎么也不明白guice的用法(连一个能直接跑的例子都没有,纯理论讲解),这个基于guice的warp则是提供了warp-mvc和warp-persist,前者自创了一套类似与tapestry的组件式页面导航方式,后者则是能完全依靠注解实现hibernate的查询操作,初看时,代码那个简练,语法那个轻巧,可实际用的时候直叫在下呕血三升啊。(在下是菜鸟,不过菜鸟也是人啊,市面上还是菜鸟多,您说是不?) 首先说说warp-mvc,以前很迷tapestry,非常崇拜它那种一次开发到处应用的组件式开发,而且还可以彻底摆脱jsp的约束,前台模板使用html,号称美工可以对模板直接修改。但是这种东西学习曲线太大了,您想想,要把所有的页面效果都换成组件(component)那是何等巨大的工作量啊,在佩服作者完成这项转换工作之后,咱们又要重新背诵一遍这些组件的用法。。。。别的不管,先吐血一升再说。 窃以为,实现tapestry,jsf那种组件化开发,一定要ide支持,光靠手写代码加大脑记忆太不现实了,对于一般开发者来说,为了做那么几个小东西就要去熟悉庞大的组件库,得不偿失啊。 话说回来warp-mvc作者为了设计精巧提倡复用,自己简化了tapestry,可您简化什么都好,怎么把实时修改模板的功能给简化去了?html模板文件仅仅在系统初始化时加载一次,找不到模板就会直接启动失败,如果想改模板,那可对不起只能重启了,任你如何刷新也看不到修改效果。而且warp-mvc中的组件标签也不美,至少我从字面上看不出来它究竟实现的什么功能,您能猜出来吗? <?xml version="1.0" encoding="UTF-8"?> <html xmlns:w="http://www.wideplay.com/warp/schema/warp_core.xsd" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head w:component="meta"> <title>Warp :: List Blogs</title> </head> <body w:component="frame"> <h1>A list of blog entries</h1> <table w:component="table" w:items="${blogList}"> <td w:component="column" w:property="subject"> <a w:component="hyperlink" w:target="blog" w:topic="${id}"> ${subject} </a> </td> </table> <a href="blogs/compose">compose new entry</a> </body> </html> 怪罪完warp-mvc现在开始埋怨warp-persist,必须要承认的是这种@Finder(query = "from tableName")的设计的确精巧,让人看着赏心悦目,可不知道是warp的原因,还是guice的限制,如果想让guice自动控制依赖注射,只能先写个interface,然后写impl,在impl里写。 @Finder(query = "from tableName") @Transactional public List getAll() { return null; } 这个return null实在让人觉得怪异,这个方法会在执行时,被warp-persist中的拦截器拦截,通过annotation去执行查询,可为什么不能直接写到interface里呢? @Finder(query = "from tableName") @Transactional List getAll(); 这样省代码,省文件,省心力的工程在spring中只要配置一个proxy就可以批量实现,而在guice中,需要你手工为每个interface配置warp提供的一种叫accessor的东西才能处理。苦恼啊,肯定是因为我不懂guice才会这么苦恼,不过在学会guice之前,也只能抱怨他们给的解决方案太太不美观了,一个一个设置accessor我不如手工把代码全写上算了。 最后还要抱怨一下warp-persist的filter,这个东西应该是用来实现spring那种OpenSessionInView功能的,可用起来却总是出现session is closed的错误(不好意思,这里要把<property name="current_session_context_class">managed</property>,我刚开始没好好看网上的介绍。),我想把它里边的代码(看了看不到10行)复制到自己的过滤器里调试一下,看看是不是调用顺序问题,结果它告诉我:“使用的类是被保护的,包外不可见”。好的,你不可见,那我不用了,自己照着spring的OpenSessionInView写了一个,结果很好用,但是对自己的实现没信心啊,谁让咱们是菜菜鸟呢。 呼~抱怨完毕,真心期待一种零配置的guice框架出现,最好是仿照springmvc-2.5里那种,方法里参数想要什么就可以自动绑定的。 // 自动转换parameter中的参数类型 public String index(@Param("id") int id) { Blog blog = blogManager.get(id); } // 自动获得response.getWriter()输出json public void list(Writer out) { JsonUtils.write(blogManager.getAll(), out); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-03-27
没别的,只能说售后服务不好。没有足够的文档和例子。连官方网站我都连不上(不知怎么搞的,听说别的地方人能上,但是北京不成)。没有足够的例子、文档,让大家怎么学!
|
|
返回顶楼 | |
发表时间:2008-03-27
我是参照他blog上的三个例子做的,后来自己想做修改的时候就了这些问题了。
访问www.wideplay.com需要使用代理,firefox+gladder可以是极品选择,推荐一试。 |
|
返回顶楼 | |
发表时间:2008-03-27
主贴的批评挺到位的,项目还在早期,等等看吧。
|
|
返回顶楼 | |
发表时间:2008-03-27
所以说不要出了个新东西,然后几个牛人推荐一下,就把它当圣经一样膜拜,自己试了才知道,而不是跟在后面起哄.
|
|
返回顶楼 | |
发表时间:2008-03-27
最近也在用warp-persiste,也遇到不少问题。
|
|
返回顶楼 | |
发表时间:2008-03-27
不用这么辛苦。给大家一个可以上的
http://www.wideplay.com-a.googlepages.com/ 不用tor就可以上。 说实话warp-servlet确实还很不好用。毕竟还没有release. 所以我准备简单的用guice-servlet.加个模板。 commontemplate来做。 |
|
返回顶楼 | |
发表时间:2008-03-27
http://www.iteye.com/post/499411,这篇文章中所提到的项目就是基于Guice实现的一个REST架构风格,也借鉴了sping2.5中的相关特性,希望大家提出宝贵意见。
|
|
返回顶楼 | |
发表时间:2008-03-27
quaff 写道 所以说不要出了个新东西,然后几个牛人推荐一下,就把它当圣经一样膜拜,自己试了才知道,而不是跟在后面起哄.
对..说的好....非常同意你的观点. 很鄙视一些人听见风就是雨 |
|
返回顶楼 | |
发表时间:2008-03-27
lsk 写道 quaff 写道 所以说不要出了个新东西,然后几个牛人推荐一下,就把它当圣经一样膜拜,自己试了才知道,而不是跟在后面起哄.
对..说的好....非常同意你的观点. 很鄙视一些人听见风就是雨 听风就是雨非常不好。 不过我觉得像楼主这样用心的去找出它的问题所在,也不比在一旁观望差。 |
|
返回顶楼 | |