`
John_Kong19
  • 浏览: 276271 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Velocity中判断表达式是否为空

 
阅读更多

在写模版文件判断数据是否为空的时候,想当然的写成了下面的代码。
#if(${data} != null)
    ...
#end

结果Velocity解析时抛出了如下错误:
Caused by: org.apache.velocity.exception.ParseErrorException: Encountered "null" at generator file[line 7, column 27]
一查Velocity的语法说明,原来Velocity判断null和java是不一样的。
总统上说,判断是否为null有下面几种方法:
    1. #if (! $foo) 判断$foo为空,判断非空为 #if ($foo)

    2. 使用 #ifnull() 或 #ifnotnull()

    #ifnull ($foo)

    要使用这个特性必须在velocity.properties文件中加入:

userdirective = org.apache.velocity.tools.generic.directive.Ifnulluserdirective = org.apache.velocity.tools.generic.directive.Ifnotnull
    3. 使用null工具判断

    #if($null.isNull($foo))

    注意这种方式特别有用,尤其你在需要这个判断作为一个判断字句时,比如我要你判断一个集合为null或为空时只能使用这种方式了:

    $if ($null.isNull($mycoll) || $mycoll.size()==0)
分享到:
评论

相关推荐

    velocity为空判断

    ` 可以检查变量$xxx是否为空,如果为空,则表达式结果为true,否则为false。例如: ```velocity #if (!$xxx) 变量$xxx为空或不存在 #else 变量$xxx有值 #endif ``` #### 判断非空: 直接使用变量$xxx,如果变量...

    velocity语法.pdf

    obj)#else#end`:条件判断语句,用于根据对象是否存在执行不同的代码块。 - `#foreach($info in $list)$info.someList#end`:循环迭代语句,对集合中的每个元素进行操作。 - `#macro(macroName)#end`:定义宏,...

    velocity初学者资料

    5. 条件语句:Velocity支持`#if`、`#elseif`、`#else`和`#end`构成的条件结构,可以对变量进行比较和逻辑判断。 6. 迭代语句:`#foreach`循环用于遍历集合,如产品列表`$allProducts`,或使用范围(`[1..5]`)。...

    velocity笔记

    未定义的变量在Velocity中显示为它们的原始形式,如`$email`如果没有定义,将显示为`$email`。但当我们使用`$!{email}`时,如果变量为空,它会显示为空字符串而不是变量名。 指令(Directives)是Velocity中执行...

    Velocity学习资料

    在EasyJWeb中,虽然可以使用Velocity的所有功能,但建议避免在模板中使用过于复杂的脚本表达式,以保持界面的清晰和易于维护。以下是在EasyJWeb中常见的模板语句: 1. **直接返回对象结果**:如`$!obj`用于直接展示...

    velocity简明手册

    9. **条件语句**:`#if()`、`#elseif()`、`#else()`用于条件判断,如果表达式为null或Boolean的false值时,`#if()`会执行其后的代码。 10. **逻辑运算符**:`=`, `&&`, `||`, `!`分别代表等于、逻辑与、逻辑或和...

    velocity入门简介

    user`,确保即使 `user` 为空也不会显示 `$user`。 - **条件判断**:根据 `user` 是否存在输出不同的内容。 - **循环**:遍历 `members` 集合输出每个成员的信息。 #### 五、总结 通过上述介绍,我们可以了解到 ...

    Velocity基本语法介绍

    - EasyJWeb鼓励避免在界面模板中使用过于复杂的脚本表达式。推荐使用提供的基本模板脚本语句,以确保模板的清晰度和易维护性。 - `!`前缀的使用能确保空值或未定义变量不产生错误,如`$!obj`会返回对象的值,若...

    mvel2.0语法指南.pdf

    **4.1 判断值是否为空** - `empty`: MVEL 中用于表示值为空的特殊标记。例如 `foo == empty` 表示 `foo` 满足空值的条件。 **4.2 判断值是否为 null** - `null` 和 `nil` 都可以表示空值,例如 `foo == null` 或 `...

    NVelocity语法

    - **输出用户喜好的MuD**:通过`#foreach`循环遍历`$mudsOnSpecial`列表,并使用`#if`条件判断检查用户是否已购买。如果是,则输出促销信息。 - **属性查找顺序**:当访问`$customer.address`时,NVelocity将尝试...

    WebWork标签库

    如果表达式结果为真,则执行其中的代码块。 - **`<ww:else/>`**:与`<ww:if/>`配合使用,表示如果前一个`<ww:if/>`条件不满足,则执行此标签内的代码。 - **`<ww:elseif/>`**:多条件判断。用于在多个条件之间进行...

    JS字符串false转boolean的方法(推荐)

    在JavaScript中,转换数据类型是常见的操作,尤其是将字符串转换为布尔值。本文主要讨论了在JavaScript中如何正确地将包含字符串"false"的变量转换为布尔值,并解决前后端交互过程中可能出现的问题。 首先,我们要...

    java面试题(整理)

    4. **如何判断一个”text” name=”myname”>文本框为空** 使用`value`属性检查是否为空。 5. **编程实现一个级联菜单** 通过DOM操作和事件监听实现。 6. **JavaScript实现的目标** JavaScript的目标在于使...

Global site tag (gtag.js) - Google Analytics