解决 freemarker 变量没有值时抛出异常

问题描述:
 
在eclipse下开发的springboot + freemaker项目,到了idea下相同的语法竟然出现问题。
 
默认情况下freemarker的变量必须有值,如果没有被赋值的变量在页面上使用就会抛出异常。
 
查看到网上的解决方案:
 
方法一、我们可以在页面上使用freemarker变量时 以 ${xxx?if_exists} 来处理空值的情况,或采用默认值的方法避免此类问题。但每个freemarker变量都这样处理确实比较让人心烦,请看以下方法。
 
方法二、在类路径下 加入 freemarker.properties 文件,里面配置 classic_compatible=true。
 
方法三、通过freemarker.template.Configuration的 config.setClassicCompatible(true);通过源码我们看到,其实方法二、方法三是思想是一致的,只是实现方法不同而已。如果应用中已经存在了 freemarker.properties 并配置了其他的属性,可以在这里配置,否则推荐使用方法三,毕竟没有每个应用的配置文件实在是都够多了。
 
方法四、在ftl文件内引入 <!--#setting classic_compatible=true-->。
 
其他关于在spring中的配置这里就省略。现在的项目中没有用到。
 
实际的解决方案:
 
-- 之前的格式为	${term.terminfos!} 修改如下
<input type="hidden" name="terminfos" id="terminfos" value="${(term.terminfos)!}"/>


-- 之前的格式为:<#if term.nickname??> 修改如下

<div class="col-xs-8">
<#if (term.nickname)??>
 <input type="text" readonly="readonly" class="form-control" id="nickname" name="nickname" value="${(term.nickname)!}" maxlength="200"  ftype="char"/>
<#else>
<input type="text"  class="form-control" id="nickname" name="nickname" value="${(term.nickname)!}" maxlength="200"  ftype="char"/>
</#if>
</div>

总结:方法二和方法三相对较好,但是由于全局部署导致了其他的异常,故选择了方法一和方法四混合使用。

至于为何eclipse下语法无问题,idea下异常并未发现具体的原因。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值