7

VelocityContext に値が見つからない場合、Velocity は単にタグ名を出力します。つまり、テンプレート ファイルに $name がありますが、VelocityContext に "name" の値がないため、"$name" だけが出力されます。変数に値がない場合、Velocity にデフォルト値を出力させたいのですが、AbstractCotnext を拡張して internalGet() メソッドをオーバーライドしようとしましたが、internalGet() の戻り値が Node オブジェクトにキャストされます。わかりませんinternalGet() メソッドで新しい Node オブジェクトを作成する方法と、この方法は非常に複雑だと思います。

デフォルト値を設定する簡単な方法はありますか (デフォルト値は単なる文字列です)。

ありがとう。

4

6 に答える 6

20

私が見る限り、すべての変数に対して簡単ではありませんが、具体的には次のようにいくつかの変数に対してのみそれを行うことができました:

テンプレート:

#if ( !$somevar )
#set ( $somevar = "mycontent" )
#end

Var is: $somevar

結果:

Var is: mycontent
于 2012-12-14T11:50:35.410 に答える
9

テンプレートに速度マクロを作成します。

#macro(defaultValue $parm)  
#if (!$!parm || $!parm == "")  
i-like-will
#else  
$parm  
#end  
#end  

同じテンプレートで次のように呼び出します。

#defaultValue($name)  

velocimacros (および一般的な速度) の詳細については、Apache Velocity - Velocity User Guideを確認してください。

于 2012-12-16T05:05:54.450 に答える
2

それを広く行う方法については、Velocity ReferenceInsertionEventHandler を Google で検索してください。

個々のケースで DisplayTool の alt() メソッドを検討してください (VelocityTools プロジェクトの一部)。

于 2012-12-14T16:44:19.537 に答える
-1

Velocity の内部をハッキングする以外にできることがいくつかあります。この質問を見てください。

于 2012-12-14T15:03:11.383 に答える