0

以下は、私がやりたいことの例です。test1.vm などのファイルがたくさんあります。

Welcome ${name}. This is test1.

次に、defaults.vm というファイルがあります。

#set($name = "nmore")

すべてのテスト ファイルを変更する必要があるため、 #parse を使用せずに defaults.vm の変数を使用して test1.vm (および他のテスト ファイル) をレンダリングします。

付属の Java ファイル内からこれを行う方法はありますか?

4

1 に答える 1

4

制約やその他の特定の要件があるかどうかはわかりませんが、ない場合は Velocity API を使用してみましたか? このようなもの:

Context context = new VelocityContext();

Template template = Velocity.getTemplate("src/main/resources/defaults.vm");
template.merge(context, NullWriter.NULL_WRITER);

StringWriter writer = new StringWriter();
Template toBeParsedTemplate = Velocity.getTemplate("src/main/resources/test1.vm");
toBeParsedTemplate.merge(context, writer);

String renderedContent = writer.getBuffer().toString();
System.out.println(renderedContent);

Contextから生成された変数をオブジェクトに入力しdefaults.vm、同じコンテキストを使用して を評価するという考え方ですtest1.vm

Velocity 1.7 を使用してこれを試してみましたが、commons-io 2.4 (の場合NullWriter) は正常に動作しているようですが、これが要件に適合するかどうか、または他の代替手段 (Velocity API を使用しない) を調べているかどうかはわかりません。 .

Contextオブジェクトの詳細はこちら:
http://velocity.apache.org/engine/devel/developer-guide.html#The_Context

それが役立つことを願っています。

于 2013-07-10T03:16:17.367 に答える