2011-01-28 9 views
27

Chcę dodać jeden szablon nested do innych cont1, cont2, cont3. I zagnieżdżony szablon powinien być ukryty pod jedną konkretną kontrolą tylko dla kont1. Przed włączeniem do cont1 chciałbym przypisać wartość do pewnej zmiennej flagi $hideMyControl.Prędkość: Czy można w dowolny sposób sprawdzić, czy zmienna jest zdefiniowana?

I wewnątrz szablonu zagnieżdżonego Chciałbym sprawdzić, czy $hideMyControl ma przypisaną wartość.

Jak wykonać takie sprawdzenie?

Odpowiedz

13

Można to zrobić za pomocą

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

Aby uzyskać więcej informacji, zobacz sekcję „formalnego odniesienia” z Apache Velocity Reference Manual.

+11

Nie ma sensu używać formalnego i cichego zapisu w #if, które i tak nie dostałeś poprawnie. Po prostu wykonaj #if ($ article) ## perform op here #end –

+2

A co z sprawdzaniem, czy to NIE jest zdefiniowane? – Snekse

+0

#if ($! {$ ArticleLeader}) nie działało, #if (! $ {ArticleLeader}) zrobił ... –

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

Jeśli $ hideMyControl jest zdefiniowana, Twój kod będzie wykonywał

+10

, chyba że hideMyControl jest wartością logiczną, która jest fałszywa ... –

0

Aby sprawdzić, czy $ hideMyControl jest w kontekście Velocity i NIE JEST logiczna 'true' wartość (lub 'false', jak również):

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

Oczywiście, jeśli naprawdę używasz zmiennej $ hideMyControl jako typu boolowskiego, nie potrzebujesz drugiej części warunku.

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

Działa to dla mnie w aplikacjach AWS API Gateway Body Mapping Templates. Proszę zapoznać się z Quiet Reference Notation w Velocity User Guide, aby uzyskać więcej informacji.

+0

Tylko jedna, która działała dla mnie w Szablony mapowania odwzorowania bramy AWS API. – leo

1

używałem

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

ponieważ kilka miesięcy temu, jednak dzisiaj jej nie działa już.

Przyszedłem tutaj, aby znaleźć pomoc, i zauważyłem nowy sposób pisania go:

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

ten kod działa!

0

Zgodnie z możliwe jest kilka konstrukcji, aby sprawdzić, czy zmienna jest zdefiniowana.

#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 

Więc ten kod działa w moim przypadku.

Powiązane problemy