freemarker空值的多种处理方法

默认状况下,freemarker的变量必须有值,若是没有被赋值的变量在页面上使用就会抛出异常,出错的信息都会显示在页面上。  
解决办法:
方法1、咱们能够在页面上使用freemarker变量时 以  ${xxx?if_exists} 来处理空值的状况,或采用默认值的方法避免此类问题。但每一个freemarker变量都这样处理确实比较让人心烦,请看如下方法。
 
方法2、在类路径下 加入  freemarker.properties 文件,里面配置 classic_compatible=true。
 
方法3、经过freemarker.template.Configuration的 config.setClassicCompatible(true);经过源码咱们看到,其实方法2、方法三是思想是一致的,只是实现方法不一样而已。若是应用中已经存在了  freemarker.properties 并配置了其余的属性,能够在这里配置,不然推荐使用方法三,毕竟没有每一个应用的配置文件实在是都够多了。
 
方法4、在ftl文件内引入  <!--#setting classic_compatible=true-->。
 
其余关于在spring中的配置这里就省略。如今的项目中没有用到。
 
总 结:方法四是须要在每一个须要这样处理的页面都要引入的,比较麻烦,、仍是选择使用 方法2、方法三好了。可是方法2、方法三也不是万能的。例如我在action中定义一个MyBean类的对象为 myBean,MyBean中有Comp属性。在页面上就要 用以下语句使用:${myBean.comp},这里myBean可能为null,comp也可能为null。这时候 就要使用方法一了,${(myBean.comp)!} 或 ${(myBean.comp)?if_exists}。