■ Velocityとは
* Java ベースのテンプレートエンジン ※テンプレートエンジン:プログラムで変更する部分と、 雛形となるドキュメントのテンプレートを別々に扱う仕組み * JSPのようにTomcatのようなアプリケーションサーバからだけでなく、どこでも使える * 元は、Apache Turbineのサブ・プロジェクト(Apache Turbineについては、以下の関連記事を参照のこと)http://blogs.yahoo.co.jp/dk521123/34032696.html
■ 構成
* テンプレートファイル(xxx.vm) * 実行するJavaソース * Java Beanhttp://www.techscore.com/page_attachments/0000/0621/velocity1-1.gif
■ 環境設定
【1】モジュールを直接ダウンロード 【2】 Gradleを使う
【1】モジュールを直接ダウンロード
[1] 以下のダウンロード先から「velocity-X.X.zip」(今回「velocity-1.7.zip」)を落としてきて、解凍するhttp://velocity.apache.org/download.cgi
[2] ダウンロードしたファイルから「velocity-X.X-dep.jar」を取り出し、Eclipseの対象プロジェクトに追加する
補足:velocity-X.X-dep.jarについて
http://www.jajakarta.org/velocity/velocity-1.4/docs-ja/developer-guide.htmlより、抜粋 ~~~~~~~ jar-dep bin ディレクトリに Velocity の完全版の jar ファイルを構築します。 この jar ファイルには、 Jakarta Avalon Logkit パッケージによるロギングに必要なサポートや、 Jakarta Commons による重要な設定のサポートや、 Jakarta ORO パッケージを使った WebMacro テンプレート変換に 必要なサポートが含まれています。 ~~~~~~~ => つまり、依存関係のあるツールも含まれたJARファイル。 ※ このdep のJARファイルでトラブった。内容は以下の関連記事を参照のこと。https://blogs.yahoo.co.jp/dk521123/36797095.html
【2】 Gradleを使う
build.gradledependencies {
compile group: 'org.apache.velocity', name: 'velocity', version: '1.7'
}
https://mvnrepository.com/artifact/org.apache.velocity/velocity/1.7■ サンプル
* すごい簡単できた!!!
SampleTemplete.vm
$msgBean.userName 様
$msgBean.date
この度はお買い上げ頂き、誠にありがとうございます。
【商品】
商品ID : $msgBean.productId
商品名 : $msgBean.productName
価格 : $msgBean.price
以上
VelocitySample.java
package com.sample.velocity; import java.io.StringWriter; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; public class VelocitySample { private static String TEMPLATE_FILE_DIRECTORY = "C:/Develop/workspace/SampleJavaCodes/templates"; public static void main(String[] args) { StringWriter writer = new StringWriter(); SampleMessageBean MessageBean = new SampleMessageBean("Mike", "2015-01-08", "111-222", "Java Program Book", 1000); try { Velocity.setProperty("file.resource.loader.path", TEMPLATE_FILE_DIRECTORY); Velocity.init(); // VelocityContext:テンプレートにセットする値を管理するためのオブジェクト VelocityContext context = new VelocityContext(); context.put("msgBean", MessageBean); // テンプレート:テキスト形式のファイル(拡張子:VM) Template template = Velocity.getTemplate("SampleTemplete.vm", "MS932"); // アプリケーション内にて、vmファイルとVelocityContextを結合し、writerに出力する template.merge(context, writer); } catch (Exception ex) { ex.printStackTrace(); } System.out.println("[出力結果]"); System.out.print(writer.toString()); } }
SampleMessageBean.java
package com.sample.velocity;
public class SampleMessageBean {
private String userName;
private String date;
private String productId;
private String productName;
private int price;
public SampleMessageBean(
String userName, String date,
String productId, String productName, int price) {
this.userName = userName;
this.date = date;
this.productId = productId;
this.productName = productName;
this.price = price;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
出力結果 [出力結果]
Mike 様
2015-01-08
この度はお買い上げ頂き、誠にありがとうございます。
【商品】
商品ID : 111-222
商品名 : Java Program Book
価格 : 1000
以上
参考文献
http://alctail.sakura.ne.jp/tip/java_kannrenn/velocity/http://javatechnology.net/java/velocity-basic/
http://www.techscore.com/tech/Java/ApacheJakarta/Velocity/1/
関連記事
Apache Velocity関連
Apache Velocity ~入門編~https://blogs.yahoo.co.jp/dk521123/34456704.html
Apache Velocity ~VTL(Velocity Template Language)編~
https://blogs.yahoo.co.jp/dk521123/34463879.html
Velocity を Servlet で使用するには
https://blogs.yahoo.co.jp/dk521123/34460303.html
Velocityを利用してメールテンプレート機能の実装を考える [1]
https://blogs.yahoo.co.jp/dk521123/36245554.html
Velocityを利用してメールテンプレート機能の実装を考える [2]
https://blogs.yahoo.co.jp/dk521123/36246607.html
JARファイル内のリソースファイルを開いてApache Velocityを使って文字列取得
https://blogs.yahoo.co.jp/dk521123/37515809.html
Velocity に関するトラブルシューティング
https://blogs.yahoo.co.jp/dk521123/36257386.html
その他関連記事
Apache Turbinehttps://blogs.yahoo.co.jp/dk521123/34032696.html
【トラブル】【Java】Commons インポートしてるけど、ClassNotFoundExceptionが発生する
https://blogs.yahoo.co.jp/dk521123/36797095.html
Java での リソース の扱いについて
https://blogs.yahoo.co.jp/dk521123/37497699.html