Velocity #foreach – Iterieren über Sammlungen & Objekte
1. Iterieren über eine String‑Liste
C#‑Backend‑Code
List<string> strList = new List<string>() {"dsd","sdfsd","asdfsd","asdfsdfsd"};
context.Put("strList", strList);Code-Sprache: C# (cs)
Velocity‑Template‑Code
#foreach($str in $strList)
$str <br/>
#endCode-Sprache: PHP (php)
Ausgabeergebnis: Jeder String der Liste wird in einer Schleife ausgelesen und mit Zeilenumbruch ausgegeben.

Syntaxerklärung
#foreach(Schleifenvariable in Sammlung) startet die Schleife, #end beendet sie.
2. Iterieren über Liste benutzerdefinierter Entitätsklassen
1. Person‑Entität (C#)
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Person(){}
public Person(string name,int age)
{
this.name = name;
this.age = age;
}
}Code-Sprache: C# (cs)
2. Liste im Backend zusammenbauen
List<Person> pList = new List<Person>();
pList.Add(new Person("Jack", 1));
pList.Add(new Person("Ben", 11));
pList.Add(new Person("Kevin", 100));
pList.Add(new Person("Simon", 500));
pList.Add(new Person("Lulu", 20));
context.Put("pList", pList);Code-Sprache: PHP (php)
3. Eigenschaftszugriff im Template
Template‑Code:
#foreach($per in $pList)
<tr>
<td>$per.name</td>
<td>$per.age</td>
</tr>
#endCode-Sprache: HTML, XML (xml)
❌Daten können nicht gelesen werden! Fehler oder leere Ausgabe
Grundlegendes Funktionsprinzip
Regel für den Zugriff auf Objekteigenschaften in Velocity :$per.xxx sucht automatisch nach der öffentlichen Get‑Methode GetXxx()
$per.name→ versuchtper.getName()aufzurufen$per.age→ versuchtper.getAge()aufzurufen
Deine Entität:
- Private Felder:
name,age - Öffentliche Eigenschaften mit Großbuchstaben am Anfang:
Name,Age, zugehörige MethodenGetName(),GetAge()
✅Korrekte Template‑Schreibweise:
#foreach($per in $pList)
<tr>
<td>$per.Name</td>
<td>$per.Age</td>
</tr>
#endCode-Sprache: HTML, XML (xml)
Hinweis: Bei C#‑Konventionen beginnen Eigenschaften mit Großbuchstaben; Java‑Entitätseigenschaften sind üblicherweise klein geschrieben. Das ist eine häufige Fallgrube bezüglich Groß‑/Kleinschreibung für Einsteiger.
3. Eingebaute nützliche Variablen von #foreach
Innerhalb der Schleife stehen diese Variablen direkt zur Verfügung:
| Variable | Bedeutung |
|---|---|
$foreach.index | Aktueller Index, beginnt bei 0 |
$foreach.count | Aktuelle laufende Nummer, beginnt bei 1 |
$foreach.first | Gibt an, ob es sich um den ersten Datensatz handelt (Boolean‑Wert) |
$foreach.last | Gibt an, ob es sich um den letzten Datensatz handelt (Boolean‑Wert) |
Beispiel:
#foreach($per in $pList)
$foreach.count , Name: $per.Name
#endCode-Sprache: PHP (php)
4. Tabellendarstellung
<table border="0" cellpadding="0" cellspacing="0">
#foreach($per in $pList)
<tr>
<td>$per.Name</td>
<td>$per.Age</td>
</tr>
#end
</table>Code-Sprache: HTML, XML (xml)
Zusammenfassung
#foreach(Variable in Sammlung)+#endist die Standardschleife von Velocity;- Bei normaler List‑Iteration gibst du
$Variabledirekt aus; - Iterieren über Entitätsobjekte:
$Objekt.EigenschaftsnameGroß‑/Kleinschreibung der öffentlichen Eigenschaften beachten, niemals auf private Felder zugreifen; - Bei C#‑Entitäten empfiehlt es sich, Eigenschaften durchgängig mit großem Anfangsbuchstaben zu schreiben und dies auch im Template einzuhalten;
- Wenn Daten leer angezeigt werden, prüfe zuerst Groß‑/Kleinschreibung der Eigenschaften und Vorhandensein des get‑Accessors.
Über Sammlungen iterieren