从Apache Velocity模板访问常量值?

是否可以从Velocity模板访问常量值(即Java类中定义的公共静态最终变量)?

我希望能够写出这样的东西:

#if ($a lt Long.MAX_VALUE) 

但这显然不是正确的语法。

有很多方法。

1)您可以将值直接放在上下文中。

2)您可以使用FieldMethodizer使类中的所有公共静态字段可用。

3)您可以使用自定义Uberspect实现,其中包含查找顺序中的公共静态字段。

4)您可以使用VelocityTools的FieldTool 。

我推荐1表示一些值,2表示几个类,3表示很多类和值,如果你已经使用了VelocityTools,我会推荐4,否则会使用1或2。

Velocity只能使用它在上下文中找到的任何东西,例如

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

由于查找的工作方式,您无法使用静态或访问Velocity上下文中的静态成员(请参阅Velocity的属性查找规则 )。 最好的办法是在上下文中显式添加要检查的值。


编辑10月6日的第二眼,似乎可以访问静态成员。 有关详细信息,请参阅velocity 开发人员指南 – 支持“静态类” 。 不过,我没有试过这个。