博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
freemarker空值的多种处理方法
阅读量:7102 次
发布时间:2019-06-28

本文共 805 字,大约阅读时间需要 2 分钟。

  hot3.png

默认情况下,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中的配置这里就省略。现在的项目中没有用到。
 
总 结:方法四是需要在每个需要这样处理的页面都要引入的,比较麻烦,、还是选择使用 方法二、方法三好了。但是方法二、方法三也不是万能的。例如我在action中定义一个MyBean类的对象为 myBean,MyBean中有Comp属性。在页面上就要 用如下语句使用:${myBean.comp},这里myBean可能为null,comp也可能为null。这时候 就要使用方法一了,${(myBean.comp)!} 或 ${(myBean.comp)?if_exists}。

转载于:https://my.oschina.net/whp/blog/42289

你可能感兴趣的文章
Linux 网络编程之 Select
查看>>
Gym 101194H 2016 ecfinal H题
查看>>
upper_bound()与lower_bound()的使用
查看>>
Aix项目_shell_rsh_01
查看>>
SOFARPC —— Generic Service (泛化调用) 解析
查看>>
C 语言学习资源
查看>>
Sql笔记-查询数据仅出现过一次、小数据位不为零、删除表及序列、ifnull函数
查看>>
caffe官网的部分翻译及NG的教程
查看>>
windows安装apache系统中无apache2服务解决方案
查看>>
常见弱点和常用端口扫描
查看>>
.Net Core建站(4):FTP发布项目及连接服务器数据库
查看>>
[K/3Cloud] 如何代码中动态设置当前活动页签
查看>>
BOS中如何扩展标准产品的功能
查看>>
第216天:Angular---自定义指令(二)
查看>>
Cannot cast from View to Text Switcher 报错
查看>>
CSS学习笔记2--超级炫酷的进度条
查看>>
hdu 3923 Invoker polya 定理
查看>>
文件下载--getRequestDispatcher以及文件流输出的方式
查看>>
jmeter后置处理器JSON Extractor
查看>>
旋转测试
查看>>