FreeMarker是Quake Wang推荐我使用的。刚学FreeMarker的时候,发现freemarker真的很棒!简单易用,功能强大。但是用它做了几个项目以后开始不爽了。
一宗罪:freemarker的变量必须有值,没有被赋值的变量就会抛出异常,那个黄黄的freemarker出错页面,真是让人看了太难过了。
freemarker的FAQ上面冠冕堂皇的说,未赋值的变量强制抛错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误。但是实
际的效果是:带来的是非常大的编程麻烦,程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判
断,这样不但没有杜绝应该杜绝的错误,反而极大增加了编程的麻烦。
二宗罪:freemarker的map限定key必须是string,其他数据类型竟然无法操作!这一点就不讲了,JavaEye上面已经有人抱怨过了。连Webwork的开发人员Pat Lightboy都在抱怨这一点。
三宗罪:freemarker为了编程方便把不可序列化的东西往session里面放!
freemarker支持在页面里面直接操作Session,request等,例如${Session[...]},方便确实很方便,但是一旦需要做群集,就会报错。
今天是???问起我这个问题,他在做Tomcat群集的时候发现freemarker报错,HttpSessionHashModel不可序列化。他修改该类源代码,让他实现序列化接口,仍然报错。我一看,HttpSessionHashModel包含的属性:
-
private
HttpSession session;
-
private
final
ObjectWrapper wrapper;
-
-
-
private
final
FreemarkerServlet servlet;
-
private
final
HttpServletRequest request;
-
private
final
HttpServletResponse response;
登时晕倒,这样的东西还往Session里面放?bad smell!
严重警告应用需要往群集上面发布应用的同学们,千万别用freemarker!
不过瑕不掩瑜,freemarker也是有优点的:
1、易学易用
我是看了一天文档就用得挺熟练了,freemarker文档写得太好了,例子丰富,照做一遍全都会了。
2、功能强大
比Velocity强大多了,还支持JSP Tag。不过最有意义的是macro功能,可以自定义常用的macro,实现页面常规操作的可复用性。
3、报错信息友好
很多应用服务器的JSP报错信息是无法定位到源代码行的。不过freemarker报错定位很准确,丝毫不差,而且信息丰富,一看就知道怎么回事(虽然那个黄黄的页面看起来让人难受)
总之,用与不用,还是看大家衡量了。我是不想再用freemarker了,准备回归JSP Tag了。
分享到:
相关推荐
FreeMarker,FreeMarker
安装freemarker插件(freemarker的eclipse插件) a) 首先下载 freemarker-ide-0.9.14.zip(在这里不用下载了,附件中已经有了) b) 解压后:把hudson.freemarker_ide_0.9.14这个文件放到:eclipse\plugins下面 c) 发现...
FreeMarker
freemarker freemarker freemarker freemarker freemarker freemarker freemarker freemarker
赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...
赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...
在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的. 1,开始标签:<#directivename parameter> 2,结束标签:</#directivename> 3,空标签:<#directivename parameter/> 实际...
freemarker\Freemarker教程_中文版
freemarker-2-3-18.jar, freemarker-2.1.5.jar, freemarker-2.2.5.jar, freemarker-2.2.8.jar, freemarker-2.3.1.jar, freemarker-2.3.10.jar, freemarker-2.3.11.jar, freemarker-2.3.12.jar, freemarker-2.3.13....
freemarker格式化的eclipse插件。用于freemarker的格式化。
Freemarker 实例,Freemarker 实例Freemarker 实例,Freemarker 实例
freemarker替换变量实例
FreeMarker手册-Freemarker 2.3.18。。。。。。。。。。。。。。。。。
FreeMarker中文文档.pdf FreeMarker入门必修
NULL 博文链接:https://zhenghuazhi.iteye.com/blog/1923544
FreeMarker api 2.3.16 FreeMarker api 2.3.16 FreeMarker api 2.3.16 FreeMarker api 2.3.16 FreeMarker api 2.3.16 FreeMarker api 2.3.16
freemarker的使用Demo,非常适用于freemarker初学,可与struts2结合使用。
freemarker官方中文帮助文档
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java
Freemarker简介及标签详解大全 Freemarker简介及标签使用说明