Iterar colecciones

Velocity #foreach — Iterar sobre colecciones y objetos

1. Iterar sobre una lista de cadenas

Código backend en C#
List<string> strList = new List<string>() {"dsd","sdfsd","asdfsd","asdfsdfsd"};
context.Put("strList", strList);Lenguaje del código: C# (cs)
Código de plantilla Velocity
#foreach($str in $strList)
    $str <br/>
#endLenguaje del código: PHP (php)

Resultado de ejecución: recorre cada cadena de la lista y la imprime con salto de línea.

Explicación de sintaxis

#foreach(variableBucle in colección) inicia el bucle, #end lo cierra.

2. Iterar sobre lista de clases de entidad personalizadas

1. Entidad Person (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;
    }
}Lenguaje del código: C# (cs)
2. Preparar la lista en el backend
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);Lenguaje del código: PHP (php)
3. Sintaxis para acceder a propiedades en plantilla

Código de plantilla:

#foreach($per in $pList)
<tr>
    <td>$per.name</td>
    <td>$per.age</td>
</tr>
#endLenguaje del código: HTML, XML (xml)

No se pueden leer los datos : aparecen errores o contenido vacío

Principio fundamental

Reglas de acceso a propiedades de objetos en Velocity:
$per.xxx busca automáticamente el método Get público GetXxx()

  • $per.name → intenta invocar per.getName()
  • $per.age → intenta invocar per.getAge()

Tu entidad:

  • Campos privados: name, age
  • Propiedades públicas con primera letra mayúscula: Name, Age, métodos correspondientes GetName(), GetAge()

✅Sintaxis correcta de plantilla:

#foreach($per in $pList)
<tr>
    <td>$per.Name</td>
    <td>$per.Age</td>
</tr>
#endLenguaje del código: HTML, XML (xml)

Nota: En C# las propiedades empiezan con mayúscula; en Java suelen ser minúsculas. Es una trampa común de mayúsculas y minúsculas para quienes empiezan.

3. Variables integradas útiles de #foreach

Variables disponibles directamente dentro del bucle:

VariableFunción
$foreach.indexÍndice actual, empieza en 0
$foreach.countNúmero secuencial actual, empieza en 1
$foreach.firstIndica si es el primer registro (valor booleano)
$foreach.lastIndica si es el último registro (valor booleano)

Ejemplo:

#foreach($per in $pList)
    $foreach.count , Nombre: $per.Name
#endLenguaje del código: PHP (php)

4. Mostrar en tabla

<table border="0" cellpadding="0" cellspacing="0">
#foreach($per in $pList)
    <tr>
        <td>$per.Name</td>
        <td>$per.Age</td>
    </tr>
#end
</table>Lenguaje del código: HTML, XML (xml)

Resumen

  1. #foreach(variable in colección) + #end es el bucle estándar de Velocity;
  2. Para listas normales, imprime directamente $variable;
  3. Al iterar objetos de entidad: $objeto.nombrePropiedad respeta la capitalización de las propiedades públicas, no accedas a campos privados;
  4. En entidades C# se recomienda usar mayúscula inicial en propiedades y mantener la misma escritura en plantillas;
  5. Si los datos aparecen vacíos, revisa primero mayúsculas/minúsculas de propiedades y la existencia del accesor get.

Iterar colecciones

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *