2011-01-28 15 views
27

Desidero includere un modello nested negli altri cont1, cont2, cont3. E il modello nidificato dovrebbe essere nascosto un controllo specifico solo per cont1. Prima dell'inclusione in cont1 Vorrei assegnare un valore ad alcune variabili flag $hideMyControl.Velocity: è un modo per verificare se la variabile è definita

E all'interno del modello annidato vorrei verificare se il valore $hideMyControl è assegnato.

Come eseguire tale controllo?

risposta

13

È possibile farlo usando

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

Per ulteriori informazioni, vedere la sezione 'riferimento formale' del Apache Velocity Reference Manual.

+11

Non c'è motivo di usare la notazione formale e silenziosa in un #if, che comunque non avevi proprio ragione. Esegui #if ($ article) ## esegui op qui #end –

+2

Quindi, per quanto riguarda il controllo se NON è definito? – Snekse

+0

#if ($! {$ ArticleLeader}) non ha funzionato, #if (! $ {ArticleLeader}) ha ... –

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

Se $ hideMyControl è definito, il codice verrà eseguito

+10

a meno che hideMyControl non sia un booleano falso .... –

0

Per verificare se $ hideMyControl è nel contesto di velocità e NON booleano valore 'vero' (o 'falso' pure):

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

Certo, se si utilizza realmente la variabile $ hideMyControl come tipo booleano, non è necessaria la seconda parte della condizione.

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

Questo funziona per me in AWS API Gateway Body Mapping Templates. Per ulteriori informazioni, consultare Quiet Reference Notation in Manuale utente Velocity.

+0

Solo uno che ha funzionato per me in Modelli di mappatura del corpo del gateway API AWS. – leo

1

stavo usando

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

da qualche mese fa, tuttavia oggi la sua non funziona più.

Sono venuto qui per trovare aiuto, e ho notato un nuovo modo di scriverlo:

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

questo codice funziona!

0

In base allo docs for Strict Reference Mode è possibile eseguire diverse costruzioni per verificare se la variabile è definita.

#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 

Quindi questo codice funziona nel mio caso.

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