Pregunta

Quiero agregar un elemento a la lista en mi macro Velocity. ¿Es esta la única forma de evitar que aparezca texto 'verdadero' en la salida de Velocity?

#set($path = [])
#set($swallow = "a")

#set ($swallow = $path.add("blaablaa"))
¿Fue útil?

Solución

Tengo que estar de acuerdo con Terence Parr (padre de StringTemplate ) que tiene comentarios relevantes en una entrevista de Artima y un buen documento sobre la separación de vista de modelo .

Las plantillas deben restringirse a la presentación pura. Así como no deberíamos poner detalles de la capa de presentación en el modelo, tampoco deberíamos poner la manipulación de datos en nuestras plantillas. Hacer cualquiera de ellas generalmente termina haciendo que el mantenimiento sea más difícil e incluso hace que sea más difícil saber dónde hacer el mantenimiento.

Basado en mi propia experiencia con Velocity y StringTemplate, sugeriría encarecidamente tomar el problema en su pregunta (artefactos de manipulación de datos que hacen que la plantilla sea más complicada) como una pista y mover toda la manipulación de estructuras de datos a la capa Java .

Otros consejos

Sí, si quieres callarte, entonces #set es tu amigo. Muchas personas atajan esto con una macro como esta:

#macro( call $this )#set( $stfu = $this )#end

Entonces puedes abreviar a

#call( $path.add('blaablaa') )
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top