2011-05-25 20 views

Respuesta

0

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.

40

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.

+0

Nota sin embargo que foo.add $ (53); hace 'verdadero' o 'falso' en el documento. Para evitar eso, debes envolverlo en un #if. – sproketboy

+0

El caso para la representación de verdadero o falso ya estaba cubierto en la respuesta. –

+0

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

3

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] 
Cuestiones relacionadas