现在的位置: 首页 > 综合 > 正文

关于Velocity的一点看法

2013年11月13日 ⁄ 综合 ⁄ 共 1075字 ⁄ 字号 评论关闭
说明一下,我在项目中用的就是Velocity,可以说非常熟悉了。
文章取这个标题,只是用来吸引大家眼球的噱头 :)

下面是让我感到困惑的几个问题,欢迎大家踊跃提出解决方案!谢谢!

1. 可用的组件太少。 分页都要自己写。 更别说类似于JSP中的 extreme component了。绝对的硬伤。

2. 用起来不方便,跟JSP一样,#if, #else 漫天飞

3. 当JVM的资源降低时,会发生无法生成正常的页面情况。最常见的是图片显示不完全。很难看。

4. 不支持常量访问。 比如某个类的常量 SomeClass.CONST1,不能直接访问,需要增加个丑陋的 getCONST1()方法,
然后在velocity-toolbox.xml(或类似名称文件)中增加一个类声明才行。
直接导致的情况是vm中几乎都是魔法数MagicNumber

5. 与JSP不同,无法支持 import,只能在toolbox 中进行引用。引用的类必须是 static 类型。 用起来就怀念JSP中随意的 new 了。

6. 需要页面自动跳转时,JSP的 response.sendRedirect...很方便。而VM则需要…… 本问题最常见于访问某个 index.xxx 时,上头提出一个自动跳转的功能。使用js来跳转速度又非常慢,所以只能求__助于JSP。(或者写个 *.do 或者 *.view,用servlet中的response 进行跳转)

7. Velocity1.4 与1.5 所支持的东西不同。前者不支持SET,MAP,如果参考官方的文档,会让人死都不知道怎么死的。
另外1.4也不支持定义在单独某个VM中的Macro. 如果遇到个复杂的页面想用Macro来表示,而这个系统又属于集成阶段,
不让修改对应的macro配置文件,会非常麻烦。

8. 注释会出现BUG。在 1.4 版本中验证存在。 官方宣称的 ## 单行注释, #* *# 多行注释,都有BUG。
单行的BUG: 比如 XXXX(正常代码) ##(注释代码) 会出问题。
比如 #* ... *# 多行注释时,会有出现注释无效的情况,页面会把 #* ... 一起渲染出来。
我一般都是 <!-- #* .. *# --> 这样来注释。无奈啊。

9. velocity 中页面的变量只能是 String 型。 所以当你想比较两个数字的话,还需要 a.toString().equals(b.toString())。而在JSP中仅仅 == 就可以了。也就是说,当你在VM中遇到两个变量的相等比较时出现诡异错误时,把它们toString()然后在equals()比较是肯定可以的。

10. $var 与 <%= var %> 有区别吗? 为什么就觉得JSP不如Velocity简洁呢?  

抱歉!评论已关闭.