Template Engine -Velocity- varlal.com 2013/2/25
7.どうやって繋がっているかを把握する【理解】
サンプルのクラスにコメントをつけることで、VelocityContextと.vmファイルをマージする流れは理解で
きたと思います。次にどのように繋がっているかを見ていきます。src/entity/Hello.java の中のgetは使
用していないので消して、実行してみます。
src/entity/Hello.java
package entity;
import java.util.List;
public class Hello {
private String name;
private List<String> list;
public void setName(String name) {
this.name = name;
}
public void setList(List<String> list) {
this.list = list;
}
}
また、setやgetを作るのが面倒なとき、例えば以下のような例では、
右クリック - Sorce - Generate getters and setters で自動生成できます(Eclipse)。
velocityのエンティティを作る際に活躍するでしょう。
import java.util.Date;
public class document {
public String DocumentName;//題名
public Date RegistDate; //登録日付
public String Authur; //著者
public String Keyword; //キーワード
public String Abstruct; //概要・アブストラクト
}
8.マージした時の出力先【理解】
今回、マージしたドキュメントを保存してある変数writerは、StringWriterクラスです。これは、
java.io.StringWriterで使えるようになる、いわゆる標準(画面)出力用のバッファです。
//テンプレートとVelocityContextをマージしてwriterに保存する。
template.merge(context, writer);
の第二引数はWriterクラスが指定されています。Writerクラスの直系のサブクラスは以下のようなものが
あります。単に画面に出力したい時はStringWriterを使い、ファイルに出力したい時はBufferedWriterや
PrintWriterを使うと良いでしょう。
Writerクラスの直系のサブクラス
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
結果:
$hello.name
---------------------
---------------------
となってしまい。読み込めていないことがわ
かります。
よって、テンプレートのプロパティ参照に
は、getterを使っていることがわかります。