2011-01-28 16 views
27

nestedを他のテンプレートに含めるcont1cont2cont3です。 そして、ネストされたテンプレートはcont1のための特定のコントロールを隠す必要があります。 cont1にインクルードする前に、フラグ変数$hideMyControlに値を割り当てたいと思います。ベロシティ:変数が定義されているかどうかを確認する方法はありますか

そして入れ子になったテンプレートの中で、$hideMyControlに値が割り当てられているかどうかチェックしたいと思います。

どのようにチェックするのですか?

答えて

13

あなたは、より多くの情報については

#if($!{$articleLeader}) 
     // Perform your operation or the template part you want to show. 
    #end 

を使用してこれを行うApache Velocity Reference Manualの「正式なリファレンス」セクションを参照してくださいすることができます。

+11

#ifに正式表記とサイレント表記を使用しても意味がありません。 #if($ article)#ここでopを実行する#end –

+2

それでは、定義されていないかどうかをチェックするのはどうですか? – Snekse

+0

#if($!{$ articleLeader})が機能しませんでした。 #if(!$ {articleLeader})... –

28
#if($hideMyControl) 
    // your code 
#end 

$ hideMyControlが定義されている場合、あなたのコードは$ hideMyControlは、Velocityコンテキスト内にあり、(同様または 'false')ブール '真' 値ではありませんかどうかを確認するには

+10

hideMyControlがfalseのブール値でない限り、... –

0

を実行します:

#if ($hideMyControl && $hideMyControl != true) 
    ##do stuff 
#end 

本当に$ hideMyControl変数をブール型として使用する場合、条件の2番目の部分は必要ありません。

3
#if($!{hideMyControl} != "") 
## do something if $hideMyControl is defined 
#end 

これはAWS API Gateway Body Mapping Templatesで使用できます。詳細については、Velocity User GuideのQuiet Reference Notationを参照してください。

+0

AWS API Gatewayのボディマッピングテンプレート – leo

1

私は しかし本日はもう機能していない、数ヶ月前から

#if ($hideMyControl) 
    //do something 
#end 

を使用していました。

私は助けを見つけるためにここに来て、それを書くための新しい方法を気づいた:

#if($!{$hideMyControl}) 
    // do something 
#end 

このコードは動作します!

0

docs for Strict Reference Modeによれば、変数が定義されているかどうかをチェックするいくつかの構造が可能です。

#if ($foo)#end     ## False 
#if (! $foo)#end    ## True 
#if ($foo && $foo.bar)#end  ## False and $foo.bar will not be evaluated 
#if ($foo && $foo == "bar")#end ## False and $foo == "bar" wil not be evaluated 
#if ($foo1 || $foo2)#end  ## False $foo1 and $foo2 are not defined 

ので、このコードは、私の場合で動作します。

#if(!$value) 
    // Perform your operation or the template part you want to show. 
#end 
関連する問題