freemarker 变量为空处理

前人关于FreeMarker 的总结
         一宗罪:freemarker的变量必须有值,没有被赋值的变量就会抛出异常,那个黄黄的freemarker出错页面,真是让人看了太难过了。
         freemarkerFAQ上面冠冕堂皇的说,未赋值的变量强制抛错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误。但是实际的效果是:带来的是非常大的编程麻烦,程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断,这样不但没有杜绝应该杜绝的错误,反而极大增加了编程的麻烦。
         二宗罪:freemarkermap限定key必须是string,其他数据类型竟然无法操作!这一点就不讲了,JavaEye上面已经有人抱怨过了。连Webwork的开发人员Pat Lightboy都在抱怨这一点。
         三宗罪:freemarker为了编程方便把不可序列化的东西往session里面放!
freemarker支持在页面里面直接操作Sessionrequest等,例如${Session[...]},方便确实很方便,但是一旦需要做群集,就会报错。

         但是这些小错误,个人认为无伤大雅,毕竟WebWork开发小组就是用FreeMaker,那么我们在项目的时候肯会接触到.ftl 文件,所以花几个单位时间学习下,还是必要的


<#list listBlogPost as blogPost>
</#list>
如果 listBlogPost 为NULL 会报错.加上?exists(是否存在) 或者?default(“”)
如果为null时默认为空,例子:

<#if listBlogPost?exists && listBlogPost.size != 0 >

<#if Session["cartList"]?exists>
<#list Session["cartList"] as item>

${pageTitle?default(“”)}

<#if s?exists>
${s?if_exists}
exists用在逻辑判断,而if_exists用来打印东西时用到,如果存在打印,不存在打印空字符串.
exp1?exists将会被exp1??代替
exp1?if_exists将会被exp1!代替
exp1?default(exp2)将会被exp1!exp2.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值