2011-01-28 14 views
27

nested bir şablona cont1, cont2, cont3'a dahil etmek istiyorum. Ve iç içe geçmiş şablon sadece cont1 için belirli bir denetimi gizlemelidir. cont1'a dahil edilmeden önce $hideMyControl bayrak değişkenine değer atamak istiyorum.Hız: Değişken tanımlanmış olup olmadığını kontrol etmenin herhangi bir yolu var

İç içe geçmiş şablonun içinde $hideMyControl atanmış değerin olup olmadığını kontrol etmek istiyorum.

Böyle bir denetim nasıl yapılır?

cevap

13

Sen, daha fazla bilgi için

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

kullanarak bunu Apache Velocity Reference Manual ait 'biçimsel referans' bölümünü görebilirsiniz.

+11

#if'de resmi ve sessiz gösterimi kullanmanın bir anlamı yok, bu durumda zaten tam olarak hak etmediniz. Sadece #if yapın ($ makale) ## burada op yapın #end –

+2

Peki, tanımlanıp tanımlanmadığını kontrol etme ne olacak? – Snekse

+0

#if ($! {$ ArticleLeader}) işe yaramadı, #if (! $ {ArticleLeader}) ... –

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

$ hideMyControl tanımlanırsa, kodunuzu $ hideMyControl Hız bağlamında ve boolean 'gerçek' değeri (veya yanı 'false') DEĞİL eğer

+10

hideMyControl, false olan bir boole değildir. –

0

kontrol etmek için çalıştırır:

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

Eğer $ hideMyControl değişkeninizi gerçekten boole tipi olarak kullanırsanız, durumun ikinci bölümüne ihtiyacınız olmaz.

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

Bu, AWS API Ağ Geçidi Vücut Eşleme Şablonlarında benim için çalışır. Daha fazla bilgi için Velocity User Guide'da Quiet Reference Notation'a bakın. Ben onun artık çalışmıyor ancak bugün birkaç ay önce beri

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

, kullanıyordum

+0

Yalnızca benim için çalışan bir AWS API Ağ Geçidi Vücut Haritalama Şablonları. – leo

1

.

yardıma bulmaya geldim ve bunu yazma yeni bir yol fark:

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

bu kod çalışıyor!

0

docs for Strict Reference Mode belgesine göre, değişkenin tanımlanıp tanımlanmadığını kontrol etmek için birkaç konstrüksiyon mümkündür.

#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 

Yani bu kod benim durumumda çalışır.

#if(!$value) 
    // Perform your operation or the template part you want to show. 
#end 
İlgili konular