2011-01-28 102 views
27

我想包括一個模板nested到其他cont1,cont2,cont3。 嵌套模板應該只隱藏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)##在這裏執行操作#end – 2011-01-28 18:13:57

+2

那麼檢查它是否沒有定義呢? – Snekse 2013-06-21 18:30:24

+0

#if($!{$ articleLeader})沒有工作, #if(!$ {articleLeader})did ... – 2014-12-01 08:41:01

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

如果$ hideMyControl定義,你的代碼將執行

0

要檢查是否$ hideMyControl是在速度方面和IS NOT布爾 '真' 值(或 '假' 也一樣):

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

當然,如果你確實使用$ hideMyControl變量作爲布爾類型,你不需要第二部分條件。

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

這適用於AWS API網關正文映射模板中的我。有關更多信息,請參閱Velocity用戶指南中的Quiet Reference Notation

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 
相關問題