web-dev-qa-db-ja.com

速度:変数が定義されているかどうかを確認する方法です

1つのテンプレートnestedを他のテンプレートcont1cont2cont3に含めたいです。ネストされたテンプレートは、cont1に対してのみ1つの特定のコントロールを非表示にする必要があります。 cont1に含める前に、いくつかのフラグ変数$hideMyControlに値を割り当てたいと思います。

ネストされたテンプレート内で、$hideMyControlに値が割り当てられているかどうかを確認したいと思います。

そのようなチェックを行う方法は?

34
sergtk

あなたはこれを使うことができます

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

詳細については、 Apache Velocity Reference Manual の「正式なリファレンス」セクションを参照してください。

18
sagar27
#if($hideMyControl)
    // your code
#end

$ hideMyControlが定義されている場合、コードが実行されます

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

これは、AWS APIゲートウェイボディマッピングテンプレートで機能します。詳細については、Velocityユーザーガイドの Quiet Reference Notation を参照してください。

9
erabbit

使っていた

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

数か月前から、しかし今日はもう機能していません。

私はヘルプを見つけるためにここに来て、それを書く新しい方法に気づきました:

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

このコードは機能します!

1

厳密参照モードのドキュメント によると、変数が定義されているかどうかを確認するために、いくつかの構成が可能です。

#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
1
Roman Kotov

$ hideMyControlがVelocityコンテキストにあり、IS NOTブール値の「true」値(または「false」も同様))かどうかを確認するには:

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

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

0
user07