在 Velocity 模板中访问常量
最近项目中一个问题:在常量类 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"/>
来关闭。
另外一个问题:如何访问静态方法呢?暂时还有问题没有解决,这个等解决后再发文说明。
参考资料
原文链接:https://wordpress.diguage.com/archives/141.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。