Velocity テンプレートから定数値 (つまり、Java クラスで定義された public static final 変数) にアクセスすることは可能ですか?
私はこのようなものを書くことができるようにしたいと思います:
#if ($a lt Long.MAX_VALUE)
しかし、これは明らかに正しい構文ではありません。
いくつかの方法があります。
1) 値をコンテキストに直接入れることができます。
2) FieldMethodizerを使用して、クラス内のすべての public static フィールドを使用可能にすることができます。
3) ルックアップ順序に public static フィールドを含むカスタム Uberspect 実装を使用できます。
4) VelocityTools からFieldToolを使用できます。
値が少ない場合は 1、クラスが少ない場合は 2、多くのクラスと値の場合は 3、VelocityTools を既に使用していて 1 または 2 を使用する場合は 4 をお勧めします。
Velocity は、コンテキスト内で見つかったもののみを使用できます。
context.put("MaxLong", Long.MAX_VALUE);
Velocity のルックアップの仕組みが原因で、静的を使用したり、Velocity のコンテキスト内のものの静的メンバーにアクセスしたりすることはできません (Velocity のプロパティ ルックアップ ルールを参照してください)。最善の方法は、コンテキストで明示的にチェックしたい値を追加することです。
10 月 6 日を再確認すると、静的メンバーにアクセスできるようです。詳細については、速度開発者ガイド - 「静的クラス」のサポートを参照してください。ただし、これは試していません。