freemarker空值处理⽅法
如果empty标签没有在servlet中添加key或者值为null,会报错 empty Value Expression newTag is undefined。有⼈说这是个好的控制错误的机制,但本⼈不这么认为,因为空值太常见了,谁知道什么时候⾥⾯就成空值了?每个变量理论上都有可能。 难道每个变量都要加⼊⼀个判断?就像struts中丑陋的<empty>标签?既然是模板引擎,就要灵活,何必来那么多限制? 还好,freemarker⾄少提供了解决办法,否则我只好选择其它引擎了。
freemarker中空值的多种处理⽅法:
1.按照freemarker的规范,⽼⽼实实的判断是否有空值,有空值怎么处理。这在某种时候是有⽤的。格式:${empty!"EmptyValue of fbysss"} //有空值后判断出语句——>EmptyValue of fbysss
createprocessa⽐如值为空时,你可以给出⼀个友好的说明,但是很多的变量都要这么说明,未免太⿇烦了。
2.<#escape x as x!""></#escape>可以对所有的变量进⾏空值处理,这⾥是全部替换为空字符串。当然也可以替换为其它字符串。
如果其中某些变量不需要这种替换,可以加⼊<#noescape></#noescape>标签。
3.属性配置⽅法:
配置classic_compatible=true可以满⾜⼀般需要。默认情况变量为null则替换为空字符串,如果需要⾃定义,写上${empty!"EmptyValue of fbysss"}的形式即可
a.通过Configuration设置。Configuration cfg = new Configuration(); cfg.setClassicCompatible(true);//设置属性
b.通过Eviroment设置。
Environment env = ateProcessingEnvironment(root, out);
env.setClassicCompatible(true);
c.通过ftl设置:在ftl前加⼊<!--#setting classic_compatible=true-->;
d.通过Spring配置⽂件设置
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="freemarkerSettings">
<props>
<prop key="classic_compatible">true</prop>
</props>
</property>
</bean>
e.class⽬录下添加freemarker.properties⽂件:加⼊classic_compatible=true
(需要struts2或spring)
举⼀反三,其他属性也可以⽤类似⽅法进⾏设置。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论