是否可以将 Velocity 引用设置为“null”或“undefined”?
#set
- 建立参考格式的值:
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )
用法:
$ref
- 赋值的 LHS 必须是变量引用或属性引用。
arg
- 赋值的 RHS,如果用双引号括起来,则解析 arg,如果用单引号括起来,则不解析。如果 RHS 计算结果为 null,则不会将其分配给 LHS。(强调我的)
我找不到等效的#unset
宏。
是否可以将 Velocity 引用设置为“null”或“undefined”?
#set
- 建立参考格式的值:
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )
用法:
$ref
- 赋值的 LHS 必须是变量引用或属性引用。
arg
- 赋值的 RHS,如果用双引号括起来,则解析 arg,如果用单引号括起来,则不解析。如果 RHS 计算结果为 null,则不会将其分配给 LHS。(强调我的)
我找不到等效的#unset
宏。
您可以将引用设置为 false。由于非空引用被认为是真实的,因此您可以测试是否设置了引用。这在循环中很有用。
#foreach($list 中的 $obj) #set ($x = false) #set ($x = $obj.maybeNull()) #if ($x) ... $x #结尾 #结尾
继续阅读...
根据 Velocity 的配置方式,通常无法通过此机制从上下文中删除现有引用。(请注意,这可以通过更改 Velocity 配置属性之一来实现)
在VE默认配置有属性
directive.set.null.allowed = false
如果为真,#set() 语句的右侧具有无效引用或 null 值会将左侧设置为 null。如果为假,左侧将保持不变
将其更改为true
using setProperty()
on org.apache.velocity.app.Velocity
,您就可以开始使用了。
如果您尝试获取作用域变量,则可以滥用由以下方式建立的作用域#foreach
:
#foreach($localVar in [ 'theValue'])
#end
## localVar will be unset (or returned to previous value) again