¿Cómo crear una matriz en VTL y agregar contenidos a la matriz? ¿También cómo recuperar los contenidos de la matriz por índice?Crear e iterar a través de una matriz en Velocity Template Language
Respuesta
No he creado una matriz en VTL pero pasé las matrices al contexto de VTL y las utilicé. En VTL, no se puede recuperar contenido de la matriz de índice, sólo vas a usar foreach, como ejemplo, este código se copia de mi generación de SQL dinámico VTL Guión:
#foreach($col in $Columns) SUM($col.DBColumn) AS ''$col.Name''#if($velocityCount!=$Columns.Count), #end #end
Por esta razón, tampoco podemos tener matrices 2D. Cuando necesitaba una matriz para almacenar 2 objetos en una fila, utilicé la solución de definir una nueva clase y colocar objetos de esa clase en la matriz de dimensiones únicas.
Según Apache Velocity User Guide, lado derecho de asignaciones puede ser de tipo
- referencia variable
- elemento de la lista
- literal de cadena
- Referencia del inmueble
- referencia Método
- número literal
- Arr ayList
- Mapa
Puede crear una lista vacía, que satisfaga todas sus necesidades para una matriz, en una plantilla de velocidad Apache con una expresión como:
#set($foo = [])
o inicializar valores:
#set($foo = [42, "a string", 21, $myVar])
a continuación, añadir elementos utilizando el método de Java añadir:
$foo.add(53);
$foo.add("another string");
pero tenga cuidado, ya que el método Java .add() para el tipo de lista devuelve un valor booleano, cuando agrega un elemento a la lista, Velocity imprimirá, por ejemplo, "verdadero" o "falso" en el resultado de la función "agregar".
Una obra sencilla alrededor está asignando el resultado de la función de añadir a una variable:
#set($bar = $foo.add(42))
Se puede acceder a los elementos de la lista con los números de índice:
<span>$foo[1]</span>
expresión anterior mostraría un lapso con el texto "una cuerda". Sin embargo, la forma más segura de acceder a los elementos de una lista es usar los bucles foreach.
Creación de una matriz es fácil:
#set($array = [])
Poner un elemento en una matriz también es fácil:
$array.add(23)
Conseguir un elemento de una matriz depende de su versión de velocidad. En velocidad 1.6 debe utilizar
$array.get($index)
Como la velocidad 1.7 puede utilizar la clásica forma:
$array[$index]
- 1. Iterar a través de una matriz C
- 2. "for" loop in velocity template
- 3. ¿Cómo se usa String como Velocity Template?
- 4. Iterar a través de una matriz de cadenas en Java
- 5. Iterar a través de una matriz de dimensión arbitraria
- 6. Iterar a través de una matriz de 2 dimensiones C#
- 7. ¿Cómo declarar e iterar una matriz en XSLT?
- 8. Desarreglando una variable en Velocity
- 9. Cómo iterar a través de una cadena
- 10. La recarga automática de Velocity Template no funciona
- 11. Cómo iterar a través de una DataTable
- 12. Iterar a través de una tabla hash de objetos
- 13. Mustache.js: iterar sobre una lista recibida a través de JSON
- 14. Iterar a través de DataSet
- 15. ¿Cómo puedo iterar a través de una cadena en Python?
- 16. ¿cómo se itera a través de una matriz en fortran?
- 17. ¿Cómo puedo iterar a través de cada elemento en una matriz n-dimensional en MATLAB?
- 18. Iterar a través de elementos en una enumeración en Delphi
- 19. ¿Cuál es la forma "correcta" de iterar a través de una matriz en Ruby?
- 20. ¿Cuál es la mejor forma de iterar a través de una matriz en Classic Asp VBScript?
- 21. ¿Cómo crear una tabla de diccionario/hash al iterar a través de una columna?
- 22. ¿Cómo iterar a través de una matriz a partir del último elemento? (Rubí)
- 23. Iterar a través fechas en SQL
- 24. Iterar a través de la dimensión arbitraria en numpy
- 25. Cómo iterar en una matriz de matrices
- 26. Perl iterar a través de cada coincidencia
- 27. Analizando una matriz codificada en JSON a través de perl
- 28. Iterar a través de 2 listas
- 29. Cómo iterar a través de un fd_set
- 30. flex 3 iterar a través de valores de objeto
Nota sin embargo que foo.add $ (53); hace 'verdadero' o 'falso' en el documento. Para evitar eso, debes envolverlo en un #if. – sproketboy
El caso para la representación de verdadero o falso ya estaba cubierto en la respuesta. –
Oh, sí lo siento. Me acabo de dar cuenta. Puede usar el método add con el parámetro de índice que devuelve vacío. – sproketboy