Acabo de buscar en Google 'for loop', pero parece que la velocidad tiene 'foreach' solamente.¿Cómo usar el bucle 'for' en la plantilla de velocidad?
¿Cómo uso 'for loop' en la plantilla de velocidad?
Acabo de buscar en Google 'for loop', pero parece que la velocidad tiene 'foreach' solamente.¿Cómo usar el bucle 'for' en la plantilla de velocidad?
¿Cómo uso 'for loop' en la plantilla de velocidad?
Sólo hay #foreach
. Tendrás que poner algo iterable en tu contexto. P.ej. hacer bar
disponible que es una matriz o Collection
de algún tipo:
#foreach ($foo in $bar)
$foo
#end
O si lo desea repetir un rango de números:
#foreach ($number in [1..34])
$number
#end
// Gracias! ¡No entiendo por qué no tienen el bucle más básico! – Moon
foreach es el tipo de bucle más básico. porque es uno avanzado. –
Tenga en cuenta que los rangos en Velocity son inclusivos, por lo que el segundo ejemplo se repetirá 34 veces, con '$ number 'pasando de 1 a 34. – Starwarswii
quería añadir esa iteración información privilegiada bucle foreach se puede acceder desde especial $foreach
propiedad:
#foreach ($foo in $bar)
count: $foreach.count
index: $foreach.index
first: $foreach.first
last: $foreach.last
#end
(última vez que revisé last
contenía un error sin embargo)
Exactamente lo que necesitaba. Necesitaba escribir el índice en mi plantilla. Gracias por esta publicación! –
Si está atrapado con Velocity 1.6 (fe según lo utilizado por Confluence), solo '$ velocityCount' y' $ velocityHasNext' están disponibles (http://velocity.apache.org/engine/releases/velocity-1.6/user- guide.html # Loops) – sendmoreinfo
También puede obtener estas variables desde dentro de los bucles anidados con '$ foreach.parent.whatever', por ej. '$ foreach.parent.parent.index' obtiene el índice del bucle externo desde un bucle foreach anidado triplemente. – Starwarswii
Encontré la solución cuando estaba tratando de hacer una lista en bucle. Ponga la lista en otra clase y cree getter y setter para la lista obj. por ejemplo
public class ExtraClass {
ArrayList userList = null;
public ExtraClass(List l) {
userList = (ArrayList) l;
}
public ArrayList getUserList() {
return userList;
}
public void setUserList(ArrayList userList) {
this.userList = userList;
}
}
Entonces para el contexto velocidad poner el extraclase que la entrada. por ej.
ExtraClass e = new ExtraClass(your list);
VelocityContext context = new VelocityContext();
context.put ("data", e); Dentro de la plantilla
#foreach ($x in $data.userList)
$x.fieldname //here $x is the actual obj inside the list
#end
¿Es aplicable a los mapas? –
La mejor respuesta es abajo de la tapa, por @serg: http://stackoverflow.com/a/5683891/299843 – redben