Eliminare una variabile di Velocità

È possibile impostare un riferimento di Velocità a ‘null’ o ‘undefined’?

Il Velocità di lingua del modello di riferimento dice

#set – Stabilisce il valore di riferimento
Formato:

# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )

Uso:

$ref – LHS di assegnazione deve essere un riferimento a una variabile o una proprietà di riferimento.

arg – RHS dell’incarico, arg è analizzato se racchiusa tra virgolette doppie, e non
analizzato se racchiuso tra virgolette singole. Se RHS restituisce null, non viene assegnato
per la SINISTRA.
(il corsivo è mio)

Non riesco a trovare un equivalente #unset macro.

 

3 Replies
  1. 12

    Continua a leggere…

    A seconda della modalità di Velocità
    configurato, di solito non è possibile
    per rimuovere un riferimento esistente da
    il contesto attraverso questo meccanismo. (Nota
    che questo può essere consentita la modifica
    uno dei la configurazione di Velocità
    proprietà)

    In CINQUE configurazione di default è di proprietà

    directive.set.null.allowed = false

    se è vero, avendo un destro a lato di un
    #set() dichiarazione con un riferimento non valido o nullo valore verrà impostato il
    sinistra a null. Se è false, l’
    sinistra rimarrà lo stesso

    Cambiare true utilizzando setProperty() su org.apache.velocity.app.Velocity e si è pronti ad andare.

  2. 23

    È possibile impostare il riferimento a false. Come un non nulla, di riferimento, è vero, si può quindi verificare se il riferimento è impostato. Questo è utile in loop.

    #foreach ($obj in $elenco) 
    #set ($x = false) 
    #set ($x = $obj.maybeNull()) 
    #if ($x) 
    ... 
    $x 
    #fine 
    #fine 
    
    • Poiché la velocità variabili mantenere il vecchio valore, se si tenta di assegnare un “valore null”, ho trovato questa soluzione molto bello. Alla fine del ciclo ho appena impostato la variabile a false e quando non è possibile assegnare un valore è false.
    • raffreddare la soluzione. Grazie 🙂
  3. 2

    Se si sta cercando di ottenere con scope delle variabili, è possibile abuso l’ambito stabilito dalla #foreach:

    #foreach($localVar in [ 'theValue'])
    
    #end
    
    ## localVar will be unset (or returned to previous value) again

Lascia un commento