Lectura de objetos de modelo mapeados en Velocity Templates
Pregunta
Tengo una estructura Struts + Velocity como, por ejemplo, una clase Person, cuya única propiedad es un objeto Car (con sus propios métodos getter/setter) y está asignada a un formulario Velocity que se envía a una Acción, usando la estructura ModelDriven y getModel. .
Quiero poner un botón en el formulario que muestre "Ver coche" si la propiedad del coche no es nula o car.id! = 0 o mostrar otro botón "Elegir coche" si el coche es nulo o car.id = 0.
¿Cómo codifico esto?Probé algo así en el archivo de plantilla:
#if($car != null)
#ssubmit("name=view" "value=View Car")
#else
#ssubmit("name=new" "value=Choose Car")
#end
Pero sigo recibiendo un error sobre el valor nulo en el #si línea.
También creé un método booleano hasCar() en Persona para probar, pero no puedo acceder a él y no sé por qué.
Y los tutoriales de Velocity + Struts son difíciles de encontrar o tienen buena información.
Gracias
Solución
Deberías cambiar la línea #if a:
#if($car)
Otros consejos
En la próxima versión de Velocity 1.6, podrá hacer #if( $car == $null )
sin mensajes de error.Esto le permitirá distinguir fácilmente entre cuándo $car
es nulo y cuando es falso.Para hacer eso ahora se requiere #if( $car && $car != false )
, que simplemente no es tan amigable.