是否可以将Velocity引用设置为"null"或"undefined"?
在Velocity模板语言参考说
#set
- 建立参考格式的值:
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )
用法:
$ref
- 赋值的LHS必须是变量引用或属性引用.
arg
- 赋值的RHS,arg如果用双引号括起来解析,如果用单引号括起来则不解析.如果RHS评估为null,则不会将其分配给LHS.(强调我的)
我找不到等效的#unset
宏.
您可以将引用设置为false.由于非空引用被视为true,因此您可以测试是否设置了引用.这在循环中很有用.
#foreach ($obj in $list) #set ($x = false) #set ($x = $obj.maybeNull()) #if ($x) ... $x #end #end
继续阅读......
根据Velocity的配置方式,通常无法通过此机制从上下文中删除现有引用.(注意,可以通过更改其中一个Velocity配置属性来允许)
在VE默认配置中有属性
directive.set.null.allowed = false
如果为true,则使用带有无效引用或空值的#set()语句的右侧将左侧设置为null.如果为假,左侧将保持不变
将其更改为true
使用setProperty()
上org.apache.velocity.app.Velocity
,你准备好去.