`
esteem
  • 浏览: 156173 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Velocity中如何判断null

    博客分类:
  • J2EE
阅读更多

相信这个问题是很多使用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

分享到:
评论
3 楼 lwy520 2015-09-11  
如何加载自定义的属性文件
2 楼 linyuanquan 2011-12-20  
userdirective = org.apache.velocity.tools.generic.directive.Ifnull
userdirective = org.apache.velocity.tools.generic.directive.Ifnotnull
加这两个进去报错呢,是缺包吗?如果是缺包,是缺什么包啊?网上没有这个错误的
Caused by: org.apache.velocity.exception.VelocityException: Failed to load Directive: org.apache.velocity.tools.generic.directive.ifnotnull
at org.apache.velocity.runtime.RuntimeInstance.loadDirective(RuntimeInstance.java:957)
at org.apache.velocity.runtime.RuntimeInstance.initializeDirectives(RuntimeInstance.java:889)
at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:252)
at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:107)
at org.springframework.ui.velocity.VelocityEngineFactory.createVelocityEngine(VelocityEngineFactory.java:251)
at org.springframework.web.servlet.view.velocity.VelocityConfigurer.afterPropertiesSet(VelocityConfigurer.java:119)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
... 36 more
Caused by: java.lang.ClassNotFoundException: org.apache.velocity.tools.generic.directive.ifnotnull
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.velocity.util.ClassUtils.getClass(ClassUtils.java:77)
at org.apache.velocity.util.ClassUtils.getNewInstance(ClassUtils.java:96)
at org.apache.velocity.runtime.RuntimeInstance.loadDirective(RuntimeInstance.java:935)
... 43 more
1 楼 homepageax 2011-10-10  
#if($foo == $null)
   ...
#end

相关推荐

    velocity为空判断

    下面我们将详细探讨在Velocity中如何进行空值和空字符串的判断。 ### 1. 判断Velocity变量是否为null #### 方法一:`#ifnull()` 或 `#ifnotnull()` 这两个指令属于Velocity Tools的扩展,如果你的项目中引入了...

    velocity语法,涉及其常用规整

    Velocity中提供了if、elseif和else语句,用于实现条件判断。例如: ``` #if($foo == "bar") This is true #elseif($foo == "baz") This is also true #else This is false #end ``` Velocity中还提供了switch...

    JAVA中Velocity语法基础.pdf

    ①如果上述例子中的右值是 null, 则左值不会被赋值,也就是说会保留以前的值。 ②Velocity 模板中未被定义的变量将被认为是一个字符串。 ③Velocity 模板中不会将 reference 解释为对象的实例变量。 例如: #set($...

    velocity(eclipse插件)

    2. **指令使用**: 常用的Velocity指令包括`#set`(设置变量)、`#if`(条件判断)、`#foreach`(循环)和`#macro`(定义宏)等。 3. **变量引用**: 变量引用通常以`$`开头,例如`$variable`。对于null或不存在的...

    Velocity的脚本语言

    当一个变量未定义或者其值为`null`时,默认情况下,Velocity会在生成的文档中显示该变量的名称。为了避免这种情况,可以在变量名前加上感叹号`!`,这样即使变量未定义或为`null`,也不会在文档中显示任何内容。 ...

    让人蛋疼的velocity减法运算

    标题“让人蛋疼的velocity减法运算”暗示了在使用Velocity模板语言(VTL)时,作者遇到了关于减法操作的困扰...如果在项目中遇到类似问题,建议查阅Velocity官方文档,或者在社区论坛如iteye上寻找类似问题的解决方案。

    velocity精典中文帮助文档

    NULL 博文链接:https://blueskylan.iteye.com/blog/283010

    Velocity基本标记说明.doc

    Velocity是一个强大的模板引擎,常用于Java应用中的视图层,帮助开发者将静态模板与动态数据结合起来生成输出。在Velocity中,有一些基本的标记和语法,这些标记有助于构建模板并控制其行为。以下是对这些标记的详细...

    使用velocity

    `VelocityContext`是Velocity框架中的核心类之一,用于存储和管理模板上下文中使用的变量和对象。`VelocityContext`提供了一个`put(key, value)`方法来存储变量,其中key是变量名,value是变量值。 - **多层嵌套**...

    velocity教程

    10. **条件语句和循环**:Velocity提供了`#if`、`#else`、`#elseif`来进行条件判断,以及`#foreach`进行循环操作。 11. **宏定义与调用**:`#macro`用于定义宏,而`#invoke`则用来调用已定义的宏,这对于代码复用和...

    Velocity--java的模板引擎

    在Velocity中,View就是模板文件(.vm),它包含静态文本和Velocity指令,Model则是Java对象,Controller的工作由Velocity Engine完成,它解析模板,将Java对象的数据嵌入到模板中,生成最终的HTML或其他格式的输出...

    Velocity10分钟了解

    - **内置变量**:在循环中使用特定变量,如 `$foreach.hasNext`、`$foreach.index`、`$foreach.count` 等。 ##### 4. 文件包含 - **Include**:包含纯文本文件。 ```velocity #include("greetings.txt") ``` - ...

    velocity模板引擎

    例如,可以使用`#if($null.isNull($orderList.orders) || $orderList.orders.size() == 0)`来判断一个集合是否为空,也可以使用`#if(!$(orderDto))`来判断单个对象是否为空。 #### 四、数值与日期格式化 - **数值与...

    velocity语法

    在 Velocity 模板语言中,变量可以通过 `#set` 指令进行定义。这些变量是弱类型的,意味着无需事先指定数据类型即可直接使用。例如: ```velocity #set($name = "hello") ``` 这里 `$name` 被赋值为字符串 `"hello"`...

    velocity使用

    【Velocity使用详解】 Velocity是一个基于Java的模板引擎,它的核心功能是将模板语言与Java代码相结合,使得非程序员,如网页设计师,能够...结合其在MVC模式中的应用,Velocity成为了Java开发中不可或缺的一部分。

    velocity学习笔记

    在Velocity中,变量名称必须以字母开头,允许使用数字但不能以数字开头,例如`$2.5`是不合法的变量名。 ##### 变量规范写法与引用 推荐使用`${name}`形式引用变量,以避免与字符串混淆的情况,如`Jackisa${vice}...

    velocity新手教程

    在Velocity中,变量的定义以`#set`指令开始,例如`#set($name = "hello")`。变量是弱类型的,这意味着它们可以接受不同类型的数据。在上述示例中,我们创建了一个名为$name$的变量并赋值为字符串"hello"。值得注意的...

    Velocity配置文件详解

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

Global site tag (gtag.js) - Google Analytics