1

スタンドアロン アプリの標準的な書式設定に VelocityTool の GenericTools を使用したいと考えています。たとえば、GenericTools の NumberTool フォーマッタを使用するために、Velocity テンプレートに次のようなものがあります。

Total: $numberTool.format("#0.00", $totalPnL)

上記の「$num​​berTool」を GenericTool NumberTool に関連付けるにはどうすればよいですか。ここに私の速度コードがあります:

Velocity.init();
VelocityContext velocityContext = new VelocityContext();
Template template = Velocity.getTemplate("example.vm");
velocityContext.put("totalPnL", 100);
StringWriter sw = new StringWriter();
template.merge(velocityContext, sw);

今、私はそれを機能させるためにこれを行うことができることを知っています:

velocityContext.put("numberTool", new NumberTool());

しかし、それですべての GenericTools をアプリに追加する必要があるのでしょうか? 手動で、一度に 1 つずつ (たとえば、DateTool の別の行など)? これを使用せずに、すべての GenericTools をテンプレートに公開する方法はありませんか? GenericTools が定義された VelocityTools に付属する「tools.xml」があることは知っています。それをアプリに追加して、すべてのツールを公開できますか? もしそうなら、どのように?

ありがとう、デビッド

4

2 に答える 2

4

http://velocity.apache.org/tools/devel/javadoc/org/apache/velocity/tools/ToolManager.html

http://velocity.apache.org/tools/devel/standalone.html

デフォルトのツール構成では、すべての汎用ツールがすでに提供されています。これらのツールを構成したい場合は、構成を作成できますが。構成の自動ロード、または手動仕様もあります。

   ToolManager tm = new ToolManager();
   tm.setVelocityEngine(yourVelocityEngine);
   Context context = tm.createContext();
于 2012-08-24T19:08:40.370 に答える
2

それは少なくとも私もそうしています。たとえば、

context.put("esc", new EscapeTool());

そして、私が単に使用するテンプレートで

${esc.h}

コードに「#」を記述して、Velocity が「velocity-script」として解析しないようにします。

これらのヘルパー ツールはむしろユーティリティであり、いくつかの基本的な兆候のみをカバーしていると思います。これらは標準になることを意図したものではなく、オンデマンドで含めることができます。

たとえば、速度のコンテキストをロードし、EscapeTool を常にコンテキストに配置する抽象クラスを作成したので、どこにでも追加する必要はありません。

あなたのプロジェクトで頑張ってください

セバスチャン

于 2012-08-23T14:58:08.970 に答える