3
一宗罪:freemarker的变量必须有值,没有被赋值的变量就会抛出异常,那个黄黄的freemarker出错页面,真是让人看了太难过了。 freemarker的FAQ上面冠冕堂皇的说,未赋值的变量强制抛错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误。但是实际的效果是:带来的是非常大的编程麻烦,程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断,这样不但没有杜绝应该杜绝的错误,反而极大增加了编程的麻烦。 二宗罪:freemarker的map限定key必须是string,其他数据类型竟然无法操作!这一点就不讲了,JavaEye上面已经有人抱怨过了。连Webwork的开发人员Pat Lightboy都在抱怨这一点。 三宗罪:freemarker为了编程方便把不可序列化的东西往session里面放! freemarker支持在页面里面直接操作Session,request等,例如${Session[...]},方便确实很方便,但是一旦需要做群集,就会报错。 今天是b051问起我这个问题,他在做Tomcat群集的时候发现freemarker报错,HttpSessionHashModel不可序列化。他修改该类源代码,让他实现序列化接口,仍然报错。我一看,HttpSessionHashModel包含的属性:
----------------------回复 个人认为FreeMarker是当前最好的用来渲染view的模板叻,希望robbin不要浅尝辄止啊,这么好的东西,轻易丢弃就太可惜叻。就好像小时候我们学骑自行车一样,你说好好的自行车四个轮子多好,为啥只有两个轮子,那么容易就摔倒呢。可是学会之后,这辈子都会骑,都觉得两个轮子的自行车的确比四个轮子的好。 -----------回复 回过头了说说FreeMarker的优点: |
FreeMarker三宗罪!
最新推荐文章于 2023-06-24 19:47:33 发布
FreeMarker三宗罪!