15

Velocity テンプレートから定数値 (つまり、Java クラスで定義された public static final 変数) にアクセスすることは可能ですか?

私はこのようなものを書くことができるようにしたいと思います:

#if ($a lt Long.MAX_VALUE)

しかし、これは明らかに正しい構文ではありません。

4

2 に答える 2

11

いくつかの方法があります。

1) 値をコンテキストに直接入れることができます。

2) FieldMethodizerを使用して、クラス内のすべての public static フィールドを使用可能にすることができます。

3) ルックアップ順序に public static フィールドを含むカスタム Uberspect 実装を使用できます。

4) VelocityTools からFieldToolを使用できます。

値が少ない場合は 1、クラスが少ない場合は 2、多くのクラスと値の場合は 3、VelocityTools を既に使用していて 1 または 2 を使用する場合は 4 をお勧めします。

于 2008-10-17T22:11:44.610 に答える
6

Velocity は、コンテキスト内で見つかったもののみを使用できます。

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

Velocity のルックアップの仕組みが原因で、静的を使用したり、Velocity のコンテキスト内のものの静的メンバーにアクセスしたりすることはできません (Velocity のプロパティ ルックアップ ルールを参照してください)。最善の方法は、コンテキストで明示的にチェックしたい値を追加することです。


10 月 6 日を再確認すると、静的メンバーにアクセスできるようです。詳細については、速度開発者ガイド - 「静的クラス」のサポートを参照してください。ただし、これは試していません。

于 2008-09-29T13:31:43.263 に答える