代码之家  ›  专栏  ›  技术社区  ›  Simon Nickerson

从Apache速度模板访问常量值?

  •  14
  • Simon Nickerson  · 技术社区  · 16 年前

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

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

    #if ($a lt Long.MAX_VALUE)
    

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

    2 回复  |  直到 16 年前
        1
  •  10
  •   Nathan Bubna    16 年前

    有很多方法。

    1)您可以将这些值直接放到上下文中。

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

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

    4)您可以使用 FieldTool 来自速度工具。

    我建议1表示一些值,2表示一些类,3表示许多类和值,4如果您已经在使用VelocityTools,否则将使用1或2。

        2
  •  6
  •   Angelo van der Sijpt    16 年前

    Velocity只能使用在其上下文中找到的任何内容,例如

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

    由于其查找工作的方式(请参见Velocity的 Property lookup rules )最好的做法是添加您想要在上下文中显式检查的值。


    编辑10月6日 乍一看,似乎可以访问静态成员。查看速度 Developer guide - Support for "Static Classes" 更多信息。不过,我还没有试过。