`
kabike
  • 浏览: 609621 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

velocity set值为null

    博客分类:
  • SSH
阅读更多
前几天发现了一个问题,用set指令给一个变量赋值,如果一开始那个变量有值,然后赋值为null,则赋值不起作用.
比如如下代码
public class Bar {
 public String getBar() {
  return "hello";
 }
 public String getFoo() {
  return null;
 }
}


#set($v=$bar.bar)
$v
#set($v=$bar.foo)
$v

产生输出为

hello
hello
文档上说
引用

If the RHS is a property or method reference that evaluates to null, it will not be assigned to the LHS. Depending on how Velocity is configured, it is usually not possible to remove an existing reference from the context via this mechanism. (Note that this can be permitted by changing one of the Velocity configuration properties).

需要在配置文件中设置directive.set.null.allowed = true才行
或者
#set($v="")
#set($v=$bar.bar)
$v
#set($v="")
#set($v=$bar.foo)
$v
顺便吐槽下velocity的文档,
Note that this can be permitted by changing one of the Velocity configuration properties
你就不能顺便说下改哪个property?
分享到:
评论

相关推荐

    velocity语法

    - 如果右侧值为 `null`,则左侧值保持不变。 - 在 Velocity 模板中,未定义的变量会被当作字符串处理。 - Velocity 不会将引用解析为对象的实例变量。例如,`$foo.Name` 被解释为调用 `getName()` 方法。 #### 2. ...

    velocity新手教程

    如果右侧的值为null,变量将保留其原有的值。此外,Velocity模板中的引用通常被解释为对象的方法调用,而非实例变量,如`$foo.Name`会调用`getName()`方法,而不是访问`Name`字段。 接下来,我们讨论循环结构。...

    Velocity10分钟了解

    - **注意事项**:如果右侧的值为 `null`,则左侧的变量可能不会被赋值,具体取决于配置。 ##### 2. 条件语句 - **If/ElseIf/Else**:实现条件分支。 ```velocity #if($foo == "true") <strong>Velocity! #else...

    velocity语法,涉及其常用规整

    需要注意的是,如果右值是null,则左值不会被赋值,也就是说会保留以前的值。 循环 Velocity中提供了foreach循环语句,用于遍历数组或集合。例如: ``` #set( $list = ["pine", "oak", "maple"]) #foreach ($...

    velocity教程

    例如,`#set`指令用于赋值,如`#set( $monkey = $bill )`,这将变量`$monkey`设置为`$bill`的值。 2. **变量引用**:在Velocity中,变量用`${}`包围,如`${name}`。你可以直接引用其他变量,例如`${monkey}`。 3. ...

    velocity使用

    - **#set指令**:用于设置变量的值,如`#set($var = "value")`,可以设置任何表达式的结果为变量的值。 - **#if/#else/#end**:条件语句,用于根据条件执行不同的模板片段。 - **#foreach**:循环语句,遍历集合或...

    Velocity基本标记说明.doc

    msg`会在`msg`变量不存在或者值为`null`时显示为空字符串,而`$msg`会直接显示变量名本身。 6. **#parse()** 和 **#include()**:`#include()`用于包含静态内容,不会解析其中的Velocity指令。而`#parse()`不仅包含...

    velocity学习笔记

    若右侧为`null`,左侧变量值不变。未定义的变量默认视为字符串。Velocity模板中不会自动解析实例变量,如`$foo.Name`被视为`getName()`方法调用而非实例变量。 #### 循环结构 Velocity支持`#foreach`循环,用于...

    velocity模板引擎

    这里的`#set`是Velocity提供的控制命令之一,用于设置变量的值。此外,还可以利用`$变量名`来引用这些变量,并在模板中显示它们的值。 - **变量拼接**:除了直接定义变量外,Velocity还支持变量之间的拼接操作,...

    velocity(eclipse插件)

    1. **语法高亮**: 插件为Velocity模板文件提供了颜色丰富的语法高亮,使得代码更易读,有助于减少错误。 2. **代码提示**: 在编写Velocity模板时,插件会提供自动补全功能,包括Velocity指令、变量和宏等,提高编码...

    Velocity的脚本语言

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

    JAVA中Velocity语法基础.pdf

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

    让人蛋疼的velocity减法运算

    2. **空值(NULL)检查**:在进行运算前,确认变量是否为NULL,因为NULL与任何值进行运算都会导致错误。 3. **自定义工具类**:有时,为了扩展VTL的功能,开发者会创建自定义工具类,如果减法运算在其中,可能存在...

    Velocity简明教程1.doc

    `用于表示当变量不存在或值为null时显示为空,如`$!msg`。 **三、变量操作** 1. **变量定义**:Velocity是弱类型语言,定义变量使用`#set`,如`#set($directoryRoot = "www")`。变量名可以包含字母、数字、连字符和...

    使用velocity

    - **变量声明**:使用`#set($变量名="值")`。 - **变量引用**:使用`${变量名}`来引用已声明的变量。 - **数组声明和访问**:数组可以通过`#set($数组名=["元素1","元素2"])`声明,然后使用`${数组名.get(索引)}`...

    Velocity配置文件详解

    - **directive.set.null.allowed**:是否允许设置空值,默认为`false`。这对于确保数据完整性非常关键。 ##### 2.4 include配置 - **directive.include.output.errormsg.start**:错误信息提示开始字符串,默认为`...

    velocity基本语法

    需要注意的是,如果右侧值为`null`,左侧变量的值将保持不变。此外,未定义的变量会被当作字符串处理。 #### 二、循环 Velocity提供了循环结构来遍历集合。最常用的循环指令是`#foreach`。 **2.1 循环的基本形式*...

    Velocity--java的模板引擎

    Velocity模板语言(VTL)提供了一系列的指令,如#$、##、#set、#if、#else、#foreach等,用于控制模板的逻辑和数据绑定。例如: - `#$variable`:输出变量的值。 - `#set($var = "value")`:设置变量。 - `#if($...

Global site tag (gtag.js) - Google Analytics