はじめに
http://blogs.yahoo.co.jp/dk521123/34456704.htmlで、Velocity の設定と簡単な使い方は分かったので、 次に、テンプレートの基本的な使い方を学ぶ ※ 設定などは、上記の関連記事で行っておくこと
文法
コメント
■1行コメント * 「##」にする ■複数行コメント * 「#* *#」で囲む
繰り返す
* 構文は、以下のようなイメージ。 #foreach (<リファレンス変数> in <リファレンスまたは配列>) ... #end
if文
* 構文は、以下のようなイメージ。 #if (<条件式>) ... #end
値の設定:#set
* 構文は、以下のようなイメージ。 #set ($<変数> = <設定値>)
サンプル
VtlSample.java
import java.io.StringWriter; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; public class VtlSample { private static String TEMPLATE_FILE_DIRECTORY = "C:/Develop/workspace/SampleJavaCodes/templates"; public static void main(String[] args) { StringWriter writer = new StringWriter(); try { Velocity.setProperty("file.resource.loader.path", TEMPLATE_FILE_DIRECTORY); Velocity.init(); VelocityContext context = new VelocityContext(); SampleVtlMessageBean messageBean = new SampleVtlMessageBean(); messageBean.setUserName("Mike"); messageBean.setDate("2015-01-08"); SampleProductBean productBean1 = new SampleProductBean(); productBean1.setProductId("111-222"); productBean1.setProductName("Java Program Book"); productBean1.setPrice(1000); messageBean.addProduct(productBean1); SampleProductBean productBean2 = new SampleProductBean(); productBean2.setProductId("333-444"); productBean2.setProductName("C++ Program Book"); productBean2.setPrice(2500); messageBean.addProduct(productBean2); SampleProductBean productBean3 = new SampleProductBean(); productBean3.setProductId("555-666"); productBean3.setProductName("C# Program Book"); productBean3.setPrice(3400); messageBean.addProduct(productBean3); context.put("msgBean", messageBean); Template tmplate = Velocity.getTemplate("SampleVtlTemplete.vm", "MS932"); tmplate.merge(context, writer); } catch (Exception ex) { ex.printStackTrace(); } System.out.println("[出力結果]"); System.out.print(writer.toString()); } }
SampleVtlMessageBean.java
import java.util.ArrayList; import java.util.List; public class SampleVtlMessageBean { private String userName; private String date; private List<SampleProductBean> products; public SampleVtlMessageBean() { this.products = new ArrayList<>(); } 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 List<SampleProductBean> getProducts() { return products; } public void addProduct(SampleProductBean product) { this.products.add(product); } }
SampleProductBean.java
public class SampleProductBean { private String productId; private String productName; private int price; 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 --------------------------------------- 商品ID : 333-444 商品名 : C++ Program Book 価格 : 2500 --------------------------------------- 商品ID : 555-666 商品名 : C# Program Book 価格 : 3400 以上
参考文献
http://www.techscore.com/tech/Java/ApacheJakarta/Velocity/2/VTL文法
http://asteria.jp/documentation/20110131-090000.htmlhttp://java.akjava.com/library/jakarta-velocity/grammer
その他
http://alctail.sakura.ne.jp/tip/java_kannrenn/velocity/http://www.pwv.co.jp/take_public_html/EStore/docs/Velocity.html