相信这个问题是很多使用Velocity的朋友所经常碰到的,大家可能非常期望下面这样的代码能够运行:
#if($foo == null)
...
#end
实际上这段代码会报错。这是因为Velocity中对null的支持比较特别。总统上说,判断是否为null有下面几种方法:
1. #if (! $foo) 判断$foo为空,判断非空为 #if ($foo)
2. 使用 #ifnull() 或 #ifnotnull()
#ifnull ($foo)
要使用这个特性必须在velocity.properties文件中加入:
userdirective = org.apache.velocity.tools.generic.directive.Ifnull
userdirective = org.apache.velocity.tools.generic.directive.Ifnotnull
3. 使用null工具判断
#if($null.isNull($foo))
注意这种方式特别有用,尤其你在需要这个判断作为一个判断字句时,比如我要你判断一个集合为null或为空时只能使用这种方式了:
$if ($null.isNull($mycoll) || $mycoll.size()==0)
更详细的介绍请参考:
http://wiki.apache.org/velocity/VelocityNullSupport
http://wiki.apache.org/velocity/CheckingForNull
分享到:
相关推荐
下面我们将详细探讨在Velocity中如何进行空值和空字符串的判断。 ### 1. 判断Velocity变量是否为null #### 方法一:`#ifnull()` 或 `#ifnotnull()` 这两个指令属于Velocity Tools的扩展,如果你的项目中引入了...
Velocity中提供了if、elseif和else语句,用于实现条件判断。例如: ``` #if($foo == "bar") This is true #elseif($foo == "baz") This is also true #else This is false #end ``` Velocity中还提供了switch...
①如果上述例子中的右值是 null, 则左值不会被赋值,也就是说会保留以前的值。 ②Velocity 模板中未被定义的变量将被认为是一个字符串。 ③Velocity 模板中不会将 reference 解释为对象的实例变量。 例如: #set($...
2. **指令使用**: 常用的Velocity指令包括`#set`(设置变量)、`#if`(条件判断)、`#foreach`(循环)和`#macro`(定义宏)等。 3. **变量引用**: 变量引用通常以`$`开头,例如`$variable`。对于null或不存在的...
当一个变量未定义或者其值为`null`时,默认情况下,Velocity会在生成的文档中显示该变量的名称。为了避免这种情况,可以在变量名前加上感叹号`!`,这样即使变量未定义或为`null`,也不会在文档中显示任何内容。 ...
标题“让人蛋疼的velocity减法运算”暗示了在使用Velocity模板语言(VTL)时,作者遇到了关于减法操作的困扰...如果在项目中遇到类似问题,建议查阅Velocity官方文档,或者在社区论坛如iteye上寻找类似问题的解决方案。
NULL 博文链接:https://blueskylan.iteye.com/blog/283010
Velocity是一个强大的模板引擎,常用于Java应用中的视图层,帮助开发者将静态模板与动态数据结合起来生成输出。在Velocity中,有一些基本的标记和语法,这些标记有助于构建模板并控制其行为。以下是对这些标记的详细...
`VelocityContext`是Velocity框架中的核心类之一,用于存储和管理模板上下文中使用的变量和对象。`VelocityContext`提供了一个`put(key, value)`方法来存储变量,其中key是变量名,value是变量值。 - **多层嵌套**...
Velocity的设计初衷是为了使得Web开发更加模块化和高效,特别是在遵循模型-视图-控制器(MVC)架构的项目中。 当Velocity应用于Web开发时,它能够实现前端设计师与后端开发人员之间的高效协作。设计师可以专注于...
10. **条件语句和循环**:Velocity提供了`#if`、`#else`、`#elseif`来进行条件判断,以及`#foreach`进行循环操作。 11. **宏定义与调用**:`#macro`用于定义宏,而`#invoke`则用来调用已定义的宏,这对于代码复用和...
在Velocity中,View就是模板文件(.vm),它包含静态文本和Velocity指令,Model则是Java对象,Controller的工作由Velocity Engine完成,它解析模板,将Java对象的数据嵌入到模板中,生成最终的HTML或其他格式的输出...
- **内置变量**:在循环中使用特定变量,如 `$foreach.hasNext`、`$foreach.index`、`$foreach.count` 等。 ##### 4. 文件包含 - **Include**:包含纯文本文件。 ```velocity #include("greetings.txt") ``` - ...
例如,可以使用`#if($null.isNull($orderList.orders) || $orderList.orders.size() == 0)`来判断一个集合是否为空,也可以使用`#if(!$(orderDto))`来判断单个对象是否为空。 #### 四、数值与日期格式化 - **数值与...
在 Velocity 模板语言中,变量可以通过 `#set` 指令进行定义。这些变量是弱类型的,意味着无需事先指定数据类型即可直接使用。例如: ```velocity #set($name = "hello") ``` 这里 `$name` 被赋值为字符串 `"hello"`...
【Velocity使用详解】 Velocity是一个基于Java的模板引擎,它的核心功能是将模板语言与Java代码相结合,使得非程序员,如网页设计师,能够...结合其在MVC模式中的应用,Velocity成为了Java开发中不可或缺的一部分。
在Velocity中,变量名称必须以字母开头,允许使用数字但不能以数字开头,例如`$2.5`是不合法的变量名。 ##### 变量规范写法与引用 推荐使用`${name}`形式引用变量,以避免与字符串混淆的情况,如`Jackisa${vice}...
在Velocity中,变量的定义以`#set`指令开始,例如`#set($name = "hello")`。变量是弱类型的,这意味着它们可以接受不同类型的数据。在上述示例中,我们创建了一个名为$name$的变量并赋值为字符串"hello"。值得注意的...
在Apache Velocity框架中,`velocity.properties`配置文件扮演着核心角色。此文件通常位于`org.apache.velocity.runtime.defaults`包下,并且定义了Velocity运行时所需的关键配置信息。这些配置项通过`org.apache....