【Java】Javaテンプレートエンジン(Velocity)の基本的な使い方

java

帳票やメールの定型文を作成するのに便利な、Javaのテンプレートエンジン「Velocity」の導入方法と基本的な使い方を紹介します。
使い方も導入方法も非常にシンプルです。

今回は、テンプレートファイルの記述方法、Javaロジックの書き方を紹介していきます。

[スポンサーリンク]

Velocityの導入方法

ライブラリを追加するだけで導入は完了です。
Mavenを使用している場合は、pom.xmlへ以下を追加して下さい。

<dependency>
	<groupId>org.apache.velocity</groupId>
	<artifactId>velocity</artifactId>
	<version>1.7</version>
</dependency>

Velocityの使用方法

Velocityを使うためには、Javaプログラムとテンプレートファイルの2つが必要です。
まずは、Javaプログラムを紹介します。

public static void main(String[] args) throws IOException {
	Properties p = new Properties();
    // class path 配下のvmファイルを参照する設定です。
    // よくあるWebアプリだとresourcesフォルダ配下のvmは、「XXX.vm」とだけ記述すれば読込んでくれます。
	p.setProperty("resource.loader", "class");  
	p.setProperty("class.resource.loader.class",
			"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");  
	p.setProperty("input.encoding", "UTF-8");  
	Velocity.init(p);


	// vmファイルに出力する値を設定
	VelocityContext context = new VelocityContext();
	context.put("item", "ボールペン");
	context.put("price", "1000");


	//テンプレートの作成
	Template template = Velocity.getTemplate("src/main/java/jp/co/sample/app/velocity/test.vm", "UTF-8");
    // Webアプリで、resourcesフォルダ直下に「test.vm」を置いた場合は、こちらの記述でOKです。
    // Template template = Velocity.getTemplate("test.vm", "UTF-8");


	//テンプレートへ値を出力します。
	StringWriter sw = new StringWriter();
	template.merge(context,sw);
	sw.flush();

	System.out.println(sw.toString());
}

こちらは、vmファイル(test.vm)です。

商品名: $item
値段: $price

実行結果

>実行結果
商品名: ボールペン
値段: 1000

解説

vmファイルが、テンプレートとなります。
テンプレート内で値を差し替えたい部分は、$itemのように$変数で定義します。
値の置き換えは、13・14行目のような設定にします。

4~9行目の設定は、リソースファイルの設置を定義するためのロジックです。
今回はmainメソッドを使ったので、必要なロジックでしたが、Webアプリ(サーブレット系)の場合は不要です。

さいごに

Velocityは仕事でも何度か使いましたが、非常に便利です。
ロジックがシンプルで使いやすいことと、Junitがやりやすいという2点が、私がVelocityを好きな理由になります。

そもそもテンプレートエンジン自体、メール定型文とか帳票をつくるのに必要不可欠な存在です。
Velocityでなくても、テンプレートエンジン自体は積極的に活用しましょう。
それでは!