论坛首页 Java版 Struts

在Struts2中应用FreeMarker还是Velocity好?

浏览 4595 次
精华帖 (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[...]},但不能对其序列化。(这个对我也不是问题,作为企业里的小应用,我就不用群集)
   
最后更新时间:2008-08-06
我想大家针对在Struts2中的应用来谈,这样对我的帮助会更大些。谢谢!
   
0 请登录后投票
最后更新时间:2008-08-06
《WebWork In Action》这本书中推荐使用FreeMarker
   
0 请登录后投票
最后更新时间:2008-08-06
使用FreeMarker 更方便
   
0 请登录后投票
最后更新时间:2008-08-07
freemarker的没有被赋值的变量就会抛出异常这个问题确实有时会让你抓狂 不过关于session之说,你倒是可以扩展容器的session实现,让容器直接支持集群.
   
0 请登录后投票
最后更新时间: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
   
0 请登录后投票
最后更新时间:2008-08-07
我喜欢freemarker,首先是用熟了,然后就是解析要快些,因为它是直接将数据解析成需要的格式
   
0 请登录后投票
最后更新时间:2008-08-07
呵呵,一边到。既然大家都说freemarker更好,看来它是我的选择了!
   
0 请登录后投票
最后更新时间:2008-08-08
个人推荐使用freemaker,公司目前的架构中使用了velocity,同时,将所有的velocity放到了数据库中,但是在使用过程中发现,velocity有时候很多功能实现不了,或者说要变相的实现.比如说在一个while或for中如何中断跳出,没有办法做,有时候一些简单的四则运算,也会做不了(弱类型的问题).

查了一个freemaker的资料,对比velocity,要强很多.
   
0 请登录后投票
最后更新时间:2008-08-12
最近用smarty...巨怀念freemarker!
   
0 请登录后投票
论坛首页 Java版 Struts

跳转论坛:
JavaEye推荐