今天很不幸又看到线上一个故障,又是因为在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 Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...
Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...
Velocity 模板使用指南中文版 Velocity 是一种流行的模板引擎,广泛应用于Java 和 .Net 平台。它提供了一个灵活、可扩展的模板语言,能够根据需要生成动态内容。本文档是 Velocity 模板使用指南中文版,旨在帮助...
Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例
在Spring Boot项目中,利用Velocity模板引擎,我们可以创建一系列模板文件,如Mapper、Mapper.xml、Service和Controller等,这些模板在运行时会根据数据库中的表结构动态生成对应的Java源码。这不仅避免了手动编写...
Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎
** Velocity模板语言简介** Velocity是Apache软件基金会的一个开源项目,它是一种基于Java的模板引擎,用于将HTML、XML等静态页面与动态数据分离,使得开发者能够专注于业务逻辑,而设计师可以专注于页面布局和样式...
Velocity模板的主要目标是将业务逻辑与显示逻辑分离,让开发者专注于内容的展示,而不用关心页面布局和设计。 Velocity的工作原理基于模板语言和Java对象的结合。在模板中,开发者可以使用特定的指令(如#set、#if...
本项目主要探讨的是如何将SpringBoot与Mybatis、Velocity模板引擎进行整合,以便更高效地展示和处理数据。 首先,让我们深入了解SpringBoot的核心特性。SpringBoot的设计理念是“约定优于配置”,它内置了Tomcat...
5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...
Velocity模板引擎技术是Java Web开发中的一种重要技术,旨在解决Java Web页面视图和业务逻辑的耦合问题。通过使用Velocity模板引擎技术,可以将Java Web页面视图和业务逻辑分离,提高开发效率和页面生成速度。 ...
** Velocity模板应用详解 ** Velocity是一款强大的Java模板引擎,它为开发者提供了一种与呈现逻辑分离的方式,使得HTML、XML或者其他格式的文档可以更清晰地与业务逻辑代码分开。Velocity被广泛应用于Web应用开发,...
Velocity 是一款开源的模板引擎,它为 Java 应用程序提供了灵活的模板处理能力,尤其适用于分离应用程序的表示层逻辑和业务逻辑。Velocity 提供了一种简单的模板语言(Velocity Template Language,VTL),使得非...
### Velocity模板语言介绍 #### 一、Velocity简介 Velocity是一种基于Java的模板引擎(template engine),它使得非技术背景的人员能够轻松地使用一种简洁的模板语言来引用由Java代码所定义的对象。这种特性使得...
1. 在 Velocity 模板中使用中文时,需要注意中文乱码的问题,通常可以在 VM 文件中使用%{getText(‘’)}调用国际化资源文件的内容来避免乱码。 2. Velocity 模板文件必须经过 Action 才可以访问,以便被程序解析,不...
Velocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和...
本项目“使用了Struts结构和Velocity模板技术的BLOG”旨在演示如何结合这两种技术来创建一个功能完善的博客系统。 **Struts框架** Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它为...
【Velocity模板应用案例】 Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态内容。Velocity通过将逻辑与呈现分离,使得开发者可以专注于业务逻辑,而设计师可以自由地设计页面...