• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

在 Velocity 模板中访问常量

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/ITjs/2019/0611/615.html 最近项目中一个问题:在常量类 GlobalConstants 中定义了许多关于订单状态的常量(使用public static final 修饰),这些常量,某些情况也许有在 Velocity 模板中访问。请问,该如何访问?

由上面的问题,引申出另外一个问题:又该如何访问静态方法呢?

今天先来解决其中的一个问题。

访问常量

Velocity Tool 中提供了相应的工具类,可以非常方便地实现我们的需求。可能大家都还记得,D瓜哥在“Velocity 工具类配置” 中提到了 toolbox.xml。这里还需要在这个文件中做适当的配置。

我们这里假设我们的常量都定义在 com.diguage.util.GlobalConstants。那么,我们只需要在 toolbox.xml中添加如下内容:

<tool>
    <key>fieldTool</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.FieldTool</class>
    <parameter name="include"
               value="com.diguage.util.GlobalConstants,
                      com.diguage.util.WebConstants"/>
</tool>

这样,定义在 com.diguage.util.GlobalConstants 中的常量都可以在页面中访问了,访问方式如下:$fieldTool.ORDER_STATUS_WAITTING_PAY

如果常量定义在多个类中,这都添加到这里,使用逗号分割;如果两个类中,存着同名的常量,则后面类中的常量会覆盖前面类的定义。

有时,我们也会在某些类中定义少量的常量。这是可以这样访问:$fieldTool.in("com.diguage.SomeClass").ANOTHER_CONSTANT

这时,你可能会问,如果有一个类的对象,该如何访问这个类的常量? Velocity 也通过 FieldTool 类提供了非常方便的方式。例如,我们需要访问 Integer.MAX_VALUE,则可以这样访问:$fieldTool.in(0).MIN_VALUE

另外,还有一点需要说明,如果我们访问了在某个类或者对象中一个常量,那么这个类或对象中的其他常量也会被自动“缓存”起来,可以直接访问: $fieldTool.MAX_VALUE。这个特性,可以通过将上面的配置中,添加 <parameter name="storeDynamicLookups" value="false"/> 来关闭。

另外一个问题:如何访问静态方法呢?暂时还有问题没有解决,这个等解决后再发文说明。

参考资料

  1. Velocity JavaDoc FieldTool


相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!