是否可以從Velocity模板訪問常量值(即,在Java類中定義的公共靜態最終變量)?從Apache Velocity模板訪問常量值?
我希望能夠寫這樣的事:
#if ($a lt Long.MAX_VALUE)
但是這顯然不是正確的語法。
是否可以從Velocity模板訪問常量值(即,在Java類中定義的公共靜態最終變量)?從Apache Velocity模板訪問常量值?
我希望能夠寫這樣的事:
#if ($a lt Long.MAX_VALUE)
但是這顯然不是正確的語法。
有很多方法。
1)您可以直接在上下文中放置值。
2)您可以使用FieldMethodizer使類中的所有公共靜態字段可用。
3)您可以在查找順序中使用包含公共靜態字段的自定義Uberspect實現。
4)您可以使用VelocityTools的FieldTool。
我建議1幾個值,2幾類,3批次的類和值,和4,如果你已經使用VelocityTools,並會以其他方式使用1或2
Velocity只能使用它在上下文中找到的任何內容,例如,
context.put("MaxLong", Long.MAX_VALUE);
不能使用靜態,或在速度的背景下東西訪問靜態成員,由於其方式查找工作(見Velocity的Property lookup rules)。最好的做法是在您的上下文中明確添加要檢查的值。
編輯10月6日在第二視線,這似乎是可以訪問靜態成員。有關更多信息,請參見速度Developer guide - Support for "Static Classes"。雖然我沒有嘗試過。
靜態類的支持,不擴展到靜態字段,只是靜態方法。此外,它僅在最新版本1.6-beta1中。 – 2008-10-17 22:01:28