Über Sammlungen iterieren

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 → versucht per.getName() aufzurufen
  • $per.age → versucht per.getAge() aufzurufen

Deine Entität:

  • Private Felder: name, age
  • Öffentliche Eigenschaften mit Großbuchstaben am Anfang: Name, Age, zugehörige Methoden GetName(), 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:

VariableBedeutung
$foreach.indexAktueller Index, beginnt bei 0
$foreach.countAktuelle laufende Nummer, beginnt bei 1
$foreach.firstGibt an, ob es sich um den ersten Datensatz handelt (Boolean‑Wert)
$foreach.lastGibt 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

  1. #foreach(Variable in Sammlung) + #end ist die Standardschleife von Velocity;
  2. Bei normaler List‑Iteration gibst du $Variable direkt aus;
  3. Iterieren über Entitätsobjekte: $Objekt.Eigenschaftsname Groß‑/Kleinschreibung der öffentlichen Eigenschaften beachten, niemals auf private Felder zugreifen;
  4. Bei C#‑Entitäten empfiehlt es sich, Eigenschaften durchgängig mit großem Anfangsbuchstaben zu schreiben und dies auch im Template einzuhalten;
  5. Wenn Daten leer angezeigt werden, prüfe zuerst Groß‑/Kleinschreibung der Eigenschaften und Vorhandensein des get‑Accessors.

Über Sammlungen iterieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert