Velocidad e ignorar el retorno del método java
-
20-08-2019 - |
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"))
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') )