15

Velocity 参照を 'null' または 'undefined' に設定することは可能ですか?

Velocity テンプレートの言語リファレンスには次のように書かれています

#set- 参照形式の値を確立します。

# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )

使用法:

$ref- 割り当ての LHS は、変数参照またはプロパティ参照でなければなりません。

arg- 割り当ての右辺 arg は、二重引用符で囲まれている場合は解析され、単一引用符で囲まれている場合は解析されません。RHS が null と評価された場合、LHS には割り当てられません。(私のものを強調)

#unset同等のマクロが見つかりません。

4

3 に答える 3

24

参照を false に設定できます。null 以外の参照は true と見なされるため、参照が設定されているかどうかをテストできます。これはループで役立ちます。

#foreach ($リストの $obj)
#set ($x = false)
#set ($x = $obj.maybeNull())
#if ($x)
...
$x
#終わり
#終わり
于 2009-03-18T11:01:24.953 に答える
12

読む...

Velocityの構成方法によっては、通常、このメカニズムを介してコンテキストから既存の参照を削除することはできません。(これは、Velocity構成プロパティの1つを変更することで許可できることに注意してください)

VEでは、デフォルト構成にプロパティがあります

directive.set.null.allowed = false

trueの場合、無効な参照またはnull値を持つ#set()ステートメントの右側にあると、左側がnullに設定されます。falseの場合、左側は同じままになります

onをtrue使用するように変更すると、準備が整います。setProperty()org.apache.velocity.app.Velocity

于 2009-03-18T09:45:51.327 に答える
3

スコープ変数を取得しようとしている場合は、次の方法で確立されたスコープを悪用できます#foreach

#foreach($localVar in [ 'theValue'])

#end

## localVar will be unset (or returned to previous value) again
于 2010-01-15T03:24:37.333 に答える