web-dev-qa-db-fra.com

Vélocité et $ foreach.Count

J'utilise Velocity 1.7 et dans une boucle foreach, je veux imprimer le compte. Dans le modèle, j'ai la chaîne suivante dans une section # FORECH/# FIND:

Count: $foreach.count

et s'attendait à voir dans le résultat rendu quelque chose comme

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

mais tout ce que je vois est:

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

Des idées qu'est-ce que je fais mal?

18
yannisf

Votre code est partiel, nous ne voyons pas la directive de Foreach.

Sinon, je sais que la boucle de forach a une variable intégrée appelée $counter, bien que dans le guide, ils font référence à $foreach.count

10
k.honsali

Ni $foreach.count ni $counter travaillé pour moi.

cette réponse suggère d'utiliser $velocityCount, et ça a fonctionné pour moi.

26
summerbulb

J'ai essayé avec $counter & $foreach.count Mais aucun de ceux-ci n'a travaillé pour moi.

Cependant, le $velocityCount Tag travaillée et ci-dessous est l'exemple.

code d'entrée :

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

sortie :

In for Loop count is : 1

In for Loop count is : 2

In for Loop count is : 3
10
Sid Mannem

Je ne sais pas pourquoi la variable intégrée de la boucle de Foreach appelée $ Count ne fonctionne pas sous forme de guide. Mais $ VelocityCount est travaillé pour moi.

Il y a une propriété appelée la directive.foreach.counter.name est VelocityCount dans Velocity.Properties Fichier, de sorte que la variable de comptage $ par défaut peut ne pas fonctionner.

6
Nagaraju Badaeni

k.Honsalis Réponse est obsolète.

À ce stade, vous ne pouvez utiliser que VelocityCount de $, même si la documentation fera référence à des méthodes obsolètes.

#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
2
Goot

La variable par défaut est VelocityCount, mais vous pouvez modifier le nom de la variable et la valeur initiale (uniquement dans les versions antérieures 2.0) si vous le souhaitez.

VelocityEngine engine = new VelocityEngine();
engine.setProperty("directive.foreach.counter.name", "velocityCount");
engine.setProperty("directive.foreach.counter.initial.value", 1);

http://people.apache.org/~henning/velocity/htmlsingle/velocityusersGuide.html

1
Luiz Toscano

$velocityCount fonctionne pour moi et j'utilise Velocity 1.5 $foreach.count & $counter

0
Humayun