2011-10-04 10 views
12

Sto usando velocity 1.7 e all'interno di un ciclo foreach voglio stampare il conteggio. Nel modello che ho la seguente stringa in una sezione # foreach/# end:

Count: $foreach.count 

e mi aspettavo di vedere nel risultato reso qualcosa come

Count: 1 
... 
Count: 2 
... 

ma tutto quello che vedo è:

Count: $foreach.count 
... 
Count: $foreach.count 
... 

Qualche idea su cosa sto sbagliando?

risposta

7

Il codice è parziale, non viene visualizzata la direttiva foreach.

Else, so che il ciclo foreach è una variabile built-in chiamato $counter, anche se nella guida che si riferiscono alla $foreach.count

+3

In Velocity <1.7 ci fosse un modo per configurare il nome della variabile contatore utilizzando "directive.foreach.counter. nome = velocityCount "nelle proprietà che inizializzano il motore (questo era dalla versione predefinita). Sembra che abbiano rimosso la possibilità di fare quel cambiamento e lo abbiano chiamato specificatamente $ {foreach.counter}. –

+1

true, grazie per $ {syntax.precising} :) –

+0

Sono abituato a usare la notazione formale ... un po 'più verbosa ma per la maggior parte esposta alla chiarezza. –

19

$foreach.count$counter ha lavorato per me.

This answer suggerisce di utilizzare $velocityCount e ha funzionato per me.

+1

Prova velocity 1.7! – yannisf

+0

Questo ha funzionato anche per me.Stiamo usando velocity 1.5 e grazie all'utilizzo di framework di terze parti non possiamo passare a 1.7 –

6

Non so perché la variabile built-in del ciclo foreach chiamata $ count non funzioni come riferimento della guida. Ma $ velocityCount è funzionante per me.

C'è una proprietà chiamata directive.foreach.counter.name è velocityCount nel file velocity.properties, quindi la variabile $ count predefinita potrebbe non funzionare.

0

$velocityCount è funziona per me e sto usando velocità di 1,5 $foreach.count & $counter

2

k.honsalis risposta è deprecato.

A questo punto è possibile utilizzare solo $ velocityCount, anche se la documentazione farà riferimento a metodi deprecati.

#foreach($item in $items) 
counter 0: $foreach.index 
counter 1: $foreach.count 
counter 2: $counter 
counter 3: $velocityCount 
#end 

Output: 

$foreach.index 
$foreach.count 
$counter 
1 
5

ho provato con $counter & $foreach.count ma nessuno di questi ha lavorato per me.

Tuttavia, il tag $velocityCount ha funzionato e di seguito è riportato l'esempio.

codice di ingresso:

#foreach($entry in $entries)  
    <p>In for Loop count is : $velocityCount</p>  
#end  

uscita:

In for Loop count is : 1 

In for Loop count is : 2 

In for Loop count is : 3 
Problemi correlati