1

オブジェクトをテンプレート内の文字列に変換するために toString() 以外のものを使用するように Velocity を構成する方法はありますか? たとえば、単純な日付クラスと format() メソッドを使用していて、毎回同じ形式を使用しているとします。すべての速度コードが次のようになっている場合:

$someDate.format('M-D-yyyy')

追加できる構成がいくつかありますか?

$someDate

代わりは?(日付クラスを編集して適切なtoString()を与えるだけの立場にないと仮定します)。

それが役立つ場合、私は WebWork で構築された webapp のコンテキストでこれを行っています。

4

4 に答える 4

1

Velocity では、velocimacros と呼ばれる JSTL のようなユーティリティを使用できます。

http://velocity.apache.org/engine/devel/user-guide.html#Velocimacros

これにより、次のようなマクロを定義できます。

#macro( d $date)
   $date.format('M-D-yyyy')
#end

そして、次のように呼び出します。

#d($someDate)
于 2008-12-18T03:49:10.863 に答える
1

日付を監視し、自動的に書式設定を行う独自の ReferenceInsertionEventHandler を作成することもできます。

于 2009-02-02T22:47:14.500 に答える
1

ああ、Velocity の 1.6+ バージョンには新しい Renderable インターフェイスがあります。日付クラスを Velocity API に結び付けても構わない場合は、このインターフェイスを実装すると、Velocity は render(context, writer) メソッドを使用します (この場合、コンテキストを無視して writer を使用します) 代わりに toString( )。

于 2009-02-02T22:49:14.217 に答える