■ 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