15

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

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

#if ($a lt Long.MAX_VALUE)

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

4

2 回答 2

11

有很多方法。

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

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

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

4) 您可以使用 VelocityTools 的FieldTool

我推荐 1 用于一些值,2 用于一些类,3 用于大量类和值,如果您已经在使用 VelocityTools 并且将使用 1 或 2,则建议使用 4。

于 2008-10-17T22:11:44.610 回答
6

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

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

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


重新编辑 10 月 6日,似乎可以访问静态成员。有关更多信息,请参阅velocity Developer guide - Support for "Static Classes"。不过,我还没有尝试过。

于 2008-09-29T13:31:43.263 回答