今天很不幸又看到线上一个故障,又是因为在velocity模板中,foreach循环里set临时变量碰到null的问题
#foreach($x in $list) ## 1
#set ($temp = $x) ## 2 设置临时变量的值
$temp ## 3 输出临时变量的值
#end ## 4
在行2的地方,如果设置的值$x 为null,
这时候$temp的值不会被重置,而是保留为循环中上一次赋的值!!
这个问题,出现过好几次,导致不同的故障,我搜索了一下我们的confluence,发现其它也出现过
原因很简单,因为现在的velocity版本里,为了兼容老的版本,默认是不允许在循环中设置null值给临时变量
解决办法很简单,在velocity.properties里加入directive.set.null.allowed = true,具体到我们的环境里,就是
<service name="VelocityService" class="com.alibaba.service.velocity.DefaultVelocityService" earlyInit="true">
<property name="file.resource.loader.path" value="/templates/esite"/>
<property name="file.resource.loader.cache" value="true"/>
<property name="directive.if.tostring.nullcheck" value="false"/>
<property name="directive.set.null.allowed" value="true"/>
.......
</service>
这下,世界清净了。
--摘自一位同学处理故障
分享到:
相关推荐
Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎
Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例
Velocity模板入门简单DEMO, 代码有注解;
Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...
SpringBoot集成Mybatis,velocity模板
史上最全Velocity模板使用指南中文版,适合初学者读阅
Velocity模板解析,通过Velocity模板自动替换表达式中的变量
Velocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和...
Velocity实现模板
Velocity模板(VM)语言介绍,简单的介绍,方便入门!
SpringBoot集成Mybatis,velocity模板展示数据
多视图渲染JspModelAndView,XmlModelAndView,TextStreamModelAndView,Velocity),还可自行定义渲染. 方便的验证和异常处理机制 http://download.csdn.net/source/1373612 源程序 请下载过的受好者留下QQ:方便联系
velocity是一个很实用的页面工具,相对于jsp更便于开发维护,本文档是他的一个基础使用工具,便于比更快学习使用velocity!
velocity模板访问velocity模板访问velocity模板访问
使用了Struts结构和Velocity模板技术的BLOG
将将附件velocity1.6.zip解压后的文件夹放在\%你的myeclipse安装目录%\\Genuitec\Common\plugins 目录下。 打开\%你的myeclipse安装目录%\Genuitec\MyEclipse 8.5\configuration\org.eclipse.equinox....
velocity-web模板工具, 参考:http://blog.csdn.net/nature_fly088/article/details/52497779 和http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/
Velocity应用案例,Velocity夹包文件