¿Accediendo a valores constantes desde una plantilla de Apache Velocity?

¿Es posible acceder a un valor constante (es decir, una variable final estática pública definida en una clase Java) desde una plantilla de Velocity?

Me gustaría poder escribir algo como esto:

#if ($a lt Long.MAX_VALUE) 

Pero aparentemente esta no es la syntax correcta.

Hay diferentes maneras.

1) Puedes poner los valores directamente en el contexto.

2) Puede usar FieldMethodizer para que todos los campos estáticos públicos de una clase estén disponibles.

3) Puede usar una implementación personalizada de Uberspect que incluya campos estáticos públicos en el orden de búsqueda.

4) Puedes usar FieldTool desde VelocityTools.

Recomiendo 1 para unos pocos valores, 2 para algunas clases, 3 para muchas clases y valores, y 4 si ya está utilizando VelocityTools y de lo contrario usaría 1 o 2.

Velocity solo puede usar todo lo que encuentre en su contexto, después de, por ejemplo,

 context.put("MaxLong", Long.MAX_VALUE); 

No puede usar estadísticas, o acceder a miembros estáticos de las cosas en el contexto de Velocity debido a la forma en que funciona su búsqueda (consulte las reglas de búsqueda de propiedades de Velocity). Lo mejor que puede hacer es agregar el valor que desea verificar explícitamente en su contexto.


Editar el 6 de octubre a primera vista, parece ser posible acceder a miembros estáticos. Consulte la guía del desarrollador de Speed ​​- Soporte para “Clases estáticas” para obtener más información. Sin embargo, no he probado esto.