|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-08-06
我采用Struts2作MVC框架,想考虑应用一种模板技术来美化页面,目前在FreeMarker和Velocity之间选择,拿不定主意,想听听大伙的意见。
我先来说说我了解到的情况: Velocity优点: 1.采用简单而强大的模板语言VTL来渲染页面,能保证在Dreamwaver之类的可视化编辑器中正常显示。 2.模板可以是任意扩展名,采用.html也可以,这样就能直接在浏览器中看到效果。 3.渲染速度快。 Velocity缺点: 1.不是JavaEE标准,文档较少。 2.VTL语法需要一定上的学习时间,尽管相对较容易。 FreeMarker优点: 1.Struts2默认采用(是否溶合起来比Velocity更容易?) 2.具有一些编程能力,虽然有限,只能提供一些数据格式的轮换功能。 3.与WEB容器无关,除了HTML,也可以生成各种文本,如XML、RTF、Java源代码等。 FreeMarker缺点: 1.freemarker的map限定key必须是string,不支持其他数据类型。(对我的应用好象影响不大) 2.freemarker的变量必须有值,没有被赋值的变量就会抛出异常。程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断。 3.不能在群集上面发布应用。freemarker支持在页面里面直接操作Session,request等,例如${Session[...]},但不能对其序列化。(这个对我也不是问题,作为企业里的小应用,我就不用群集) 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
我想大家针对在Struts2中的应用来谈,这样对我的帮助会更大些。谢谢!
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
《WebWork In Action》这本书中推荐使用FreeMarker
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-06
使用FreeMarker 更方便
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-07
freemarker的没有被赋值的变量就会抛出异常这个问题确实有时会让你抓狂
不过关于session之说,你倒是可以扩展容器的session实现,让容器直接支持集群.
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-07
newchengse 写道 2.freemarker的变量必须有值,没有被赋值的变量就会抛出异常。程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断。 这一点有多种方式做: 1. 用!来处理 http://freemarker.sourceforge.net/docs/dgui_template_exp.html#dgui_template_exp_missing 2. 在开发环境和生产环境用不同的Error Handler http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html 比如生产环境用TemplateExceptionHandler.IGNORE_HANDLER |
|
| 返回顶楼 | |
|
最后更新时间:2008-08-07
我喜欢freemarker,首先是用熟了,然后就是解析要快些,因为它是直接将数据解析成需要的格式
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-07
呵呵,一边到。既然大家都说freemarker更好,看来它是我的选择了!
|
|
| 返回顶楼 | |
|
最后更新时间:2008-08-08
个人推荐使用freemaker,公司目前的架构中使用了velocity,同时,将所有的velocity放到了数据库中,但是在使用过程中发现,velocity有时候很多功能实现不了,或者说要变相的实现.比如说在一个while或for中如何中断跳出,没有办法做,有时候一些简单的四则运算,也会做不了(弱类型的问题).
查了一个freemaker的资料,对比velocity,要强很多. |
|
| 返回顶楼 | |
|
最后更新时间:2008-08-12
最近用smarty...巨怀念freemarker!
|
|
| 返回顶楼 | |








![ecsun的博客: [海鹏Blog]--{FaceYe开源} 用户头像](http://www.javaeye.com/upload/logo/user/36668/bcfaff38-8200-4288-88e6-f588c3138e36.gif?1196653519)
