请先看下面一段代码:
#foreach($id in [1..50])
#set($user = $User.Get($id))
$id : ${user.name}
#end
上面这段代码中,假设只存在一个id为1的用户,但是却会显示50个id都是1的用户及其名称,因为在 Velocity
中,如果某个赋值语句返回的结果是null,则不改变所赋值的对象值,也就是说 $user 变量会一直保持上一个有效值。
官方文档中给出解决的办法是将上面的代码改为:
#foreach($id in [1..50])
#set($user = false)
#set($user = $User.Get($id))
$id : ${user.name}
#end
如是而已!
还有其他的方法(推荐):
这个问题终于被我碰上了,根本的解
决方法应该是:
解决方法:修改velocity.properties
原配制:directive.set.null.allowed = false
修改后的配制: directive.set.null.allowed = true
修改完成后,用#if($diary)即可判断对象是否为空了~~~
见:http://www.itsmile.net/blog/article_show/20/273559/Velocity-Set-Null-value-method-Foreach
分享到:
相关推荐
`#` 是Velocity的指令标记,用于标识如`#set`、`#if`、`#else`、`#end`、`#foreach`等控制结构。例如: ```html #if($info.imgs) $info.imgs" border=0> #else #end ``` ### 1.2 变量标识符 `$` `$` 用于引用对象...
- `#foreach($info in $list)$info.someList#end`:循环迭代语句,对集合中的每个元素进行操作。 - `#macro(macroName)#end`:定义宏,用于封装重复的代码片段,提高代码复用率。 - `#include("模板文件名")` 或 ...
- **条件语句**:Velocity支持`#if`、`#else`和`#elseif`来执行条件逻辑。 - **引用对象属性**:通过`.`操作符访问对象的属性,如`$data.getRequest().getServerName()`,这等同于`$data.Request.ServerName`或`$...
通过`#foreach($item in $list)`这样的语句可以遍历数组中的每一项,并在循环体内部对每一项进行处理,如输出其值。例如,对于数组`#set($list = ["CTU", "SHA", "LAX"])`,可以使用`#foreach($item in $list) $...
Velocity 将 Java 代码从 Web 页面中分离出来,确保了网站在长期运营过程中仍然易于维护,并且提供了不同于 JSP 和 PHP 的另一种解决方案。 #### 3. Velocity 可以做什么? ##### 3.1 MudStore 示例 假设你是一个...
1. **脚本语句标识符**:`#`用于标记Velocity的脚本指令,如`#set`、`#if`、`#else`、`#end`、`#foreach`等。 2. **对象引用**:`$`用来引用对象或变量,如`$info`、`$msg`。 3. **明确变量标识**:`{}`用于明确表示...
在Apache Velocity框架中,`velocity.properties`配置文件扮演着核心角色。此文件通常位于`org.apache.velocity.runtime.defaults`包下,并且定义了Velocity运行时所需的关键配置信息。这些配置项通过`org.apache....
)**:解决转义字符和特殊符号的问题。 - **Velocimacro 的杂项(Velocimacro Miscellany)**:有关 Velocimacro 的其他用法。 - **字符串连接(String Concatenation)**:连接字符串的方法。 #### 十二、反馈...
此外,Velocity 还提供了 WIKI 和 JIRA 等工具支持社区交流和问题跟踪,以及博客和合作服务,帮助开发者更好地理解和使用 Velocity。Velocity 的设计哲学是让模板尽可能地保持简洁和清晰,让页面设计人员专注于内容...
这种机制使得 Velocity 成为了 Web 开发中的一个重要工具,尤其在实现 MVC(Model-View-Controller)架构的应用程序中。 当 Velocity 被应用于 Web 开发时,它可以显著提高开发效率,并且简化了开发流程。例如,在...
这与JSP(JavaServer Pages)有所不同,JSP虽然也实现了视图和控制的分离,但仍然允许在页面中嵌入Java代码,而Velocity完全避免了这种混合。 在Velocity中,模板语言称为Velocity Template Language (VTL),它是一...
在本文中,我们将深入探讨Velocity的基本语法及其在EasyJWeb中的最佳实践。 1. **基本语法** - `#`符号用于标识Velocity的控制结构,例如`#set`、`#if`、`#else`、`#end`、`#foreach`等。这些指令用于控制流程和...
- 处理模板中的特殊字符和空值。 - **宏相关杂项**: - 包括宏参数传递、宏嵌套等高级用法。 - **字符串连接**: - 使用`+`符号连接多个字符串。 #### 八、反馈与社区支持 - **反馈渠道**: - 鼓励用户通过官方...
`Velocity-Eclipse-4.5.1.zip` 提供了 Velocity 对 Eclipse IDE 的支持,使得开发者在 Eclipse 中可以直接编辑、调试和运行 Velocity 模板。Eclipse 插件通常包含 `features` 和 `plugins` 两个关键部分: 1. **...
以上就是Velocity简明手册的主要内容,包括变量声明、注释、属性和方法调用、条件语句、循环、宏以及在实际开发中的注意事项。理解并熟练掌握这些概念,将有助于高效地利用Velocity生成动态内容。
8. **指令**:如`#set`用于赋值,`#foreach`循环遍历集合,`#if`条件判断等,构建复杂的模板逻辑。 **六、VTL高级特性** 1. **数学特征**:支持基本的数学运算,如加减乘除,便于处理数值型数据。 2. **范围操作...
文档中的Mud Store 示例是用来演示Velocity如何实际应用于项目中的案例之一。通过这个例子,用户可以学习如何使用Velocity来创建具有动态内容的网站。 ### 五、Velocity 模板语言(VTL)简介 VTL 是一种简单而强大...