`
gstarwd
  • 浏览: 1527455 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决 Velocity 的 #foreach 中赋值语句的空值问题

阅读更多

请先看下面一段代码:

#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语法

    `#` 是Velocity的指令标记,用于标识如`#set`、`#if`、`#else`、`#end`、`#foreach`等控制结构。例如: ```html #if($info.imgs) $info.imgs" border=0> #else #end ``` ### 1.2 变量标识符 `$` `$` 用于引用对象...

    velocity语法.pdf

    - `#foreach($info in $list)$info.someList#end`:循环迭代语句,对集合中的每个元素进行操作。 - `#macro(macroName)#end`:定义宏,用于封装重复的代码片段,提高代码复用率。 - `#include("模板文件名")` 或 ...

    velocity新手教程

    - **条件语句**:Velocity支持`#if`、`#else`和`#elseif`来执行条件逻辑。 - **引用对象属性**:通过`.`操作符访问对象的属性,如`$data.getRequest().getServerName()`,这等同于`$data.Request.ServerName`或`$...

    velocity模板引擎

    通过`#foreach($item in $list)`这样的语句可以遍历数组中的每一项,并在循环体内部对每一项进行处理,如输出其值。例如,对于数组`#set($list = ["CTU", "SHA", "LAX"])`,可以使用`#foreach($item in $list) $...

    Velocity 用户指南

    Velocity 将 Java 代码从 Web 页面中分离出来,确保了网站在长期运营过程中仍然易于维护,并且提供了不同于 JSP 和 PHP 的另一种解决方案。 #### 3. Velocity 可以做什么? ##### 3.1 MudStore 示例 假设你是一个...

    Velocity简明教程1.doc

    1. **脚本语句标识符**:`#`用于标记Velocity的脚本指令,如`#set`、`#if`、`#else`、`#end`、`#foreach`等。 2. **对象引用**:`$`用来引用对象或变量,如`$info`、`$msg`。 3. **明确变量标识**:`{}`用于明确表示...

    Velocity配置文件详解

    在Apache Velocity框架中,`velocity.properties`配置文件扮演着核心角色。此文件通常位于`org.apache.velocity.runtime.defaults`包下,并且定义了Velocity运行时所需的关键配置信息。这些配置项通过`org.apache....

    Apache Velocity - Velocity User Guide

    )**:解决转义字符和特殊符号的问题。 - **Velocimacro 的杂项(Velocimacro Miscellany)**:有关 Velocimacro 的其他用法。 - **字符串连接(String Concatenation)**:连接字符串的方法。 #### 十二、反馈...

    velocity使用指南

    此外,Velocity 还提供了 WIKI 和 JIRA 等工具支持社区交流和问题跟踪,以及博客和合作服务,帮助开发者更好地理解和使用 Velocity。Velocity 的设计哲学是让模板尽可能地保持简洁和清晰,让页面设计人员专注于内容...

    velocity知识要点

    这种机制使得 Velocity 成为了 Web 开发中的一个重要工具,尤其在实现 MVC(Model-View-Controller)架构的应用程序中。 当 Velocity 被应用于 Web 开发时,它可以显著提高开发效率,并且简化了开发流程。例如,在...

    Velocity学习资料

    这与JSP(JavaServer Pages)有所不同,JSP虽然也实现了视图和控制的分离,但仍然允许在页面中嵌入Java代码,而Velocity完全避免了这种混合。 在Velocity中,模板语言称为Velocity Template Language (VTL),它是一...

    Velocity基本语法介绍

    在本文中,我们将深入探讨Velocity的基本语法及其在EasyJWeb中的最佳实践。 1. **基本语法** - `#`符号用于标识Velocity的控制结构,例如`#set`、`#if`、`#else`、`#end`、`#foreach`等。这些指令用于控制流程和...

    Velocity模板使用指南中文版

    - 处理模板中的特殊字符和空值。 - **宏相关杂项**: - 包括宏参数传递、宏嵌套等高级用法。 - **字符串连接**: - 使用`+`符号连接多个字符串。 #### 八、反馈与社区支持 - **反馈渠道**: - 鼓励用户通过官方...

    Velocity-Eclipse-4.5.1.zip

    `Velocity-Eclipse-4.5.1.zip` 提供了 Velocity 对 Eclipse IDE 的支持,使得开发者在 Eclipse 中可以直接编辑、调试和运行 Velocity 模板。Eclipse 插件通常包含 `features` 和 `plugins` 两个关键部分: 1. **...

    velocity简明手册

    以上就是Velocity简明手册的主要内容,包括变量声明、注释、属性和方法调用、条件语句、循环、宏以及在实际开发中的注意事项。理解并熟练掌握这些概念,将有助于高效地利用Velocity生成动态内容。

    velocity_guide

    8. **指令**:如`#set`用于赋值,`#foreach`循环遍历集合,`#if`条件判断等,构建复杂的模板逻辑。 **六、VTL高级特性** 1. **数学特征**:支持基本的数学运算,如加减乘除,便于处理数值型数据。 2. **范围操作...

    User Guide - Contents

    文档中的Mud Store 示例是用来演示Velocity如何实际应用于项目中的案例之一。通过这个例子,用户可以学习如何使用Velocity来创建具有动态内容的网站。 ### 五、Velocity 模板语言(VTL)简介 VTL 是一种简单而强大...

Global site tag (gtag.js) - Google Analytics