Jakarta Velocity - QuickStart!(クイックスタート)AdvertisementQuickStart!階層![]() 図1:サンプルプログラムの階層 src - Javaソースファイル template - テンプレートファイル resource - 設定ファイル等 各ファイルテンプレートファイル(hello.vm)
■普通に設定
ただいまの時刻は${date}です。
■インスタンスのプロパティ読み込み
${hello.message}
■Listループ
#foreach($str in $hello.messages)
$str
#end
■Arrayループ
#foreach($str in $array)
$str
#end
各書式の動きは以下の通り。具体的なサンプルは後述。${xxx}:プログラム内で変数を指定することにより、値を設定。 ${xxx.xxx}:あるインスタンスのプロパティをゲッター経由で読み出して、値を設定。 #foreach($str in $xxx.xxx)〜#end:あるインスタンスからコレクションをゲッター経由で読み出して、値を設定。 #foreach($str in $xxx)〜#end:配列の要素数分ループして、値を設定。 なお、#foreachのように#から始まる特定の命令はVTL(Velocity Template Language)というVelocity独特の言語である。 プロパティファイル velocity.properties resource.loader=class class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader input.encoding=Windows-31Jクラスローダーとエンコードを指定している。 利用するBean Bean.java
package hello;
import java.util.List;
public class Bean {
private String message;
private List messages;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List getMessages() {
return messages;
}
public void setMessages(List messages) {
this.messages = messages;
}
}
プロパティとセッター&ゲッター実行クラス Hello.java
package hello;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
public class Hello {
public static void main(String[] args) throws Exception{
Velocity.init("resource/velocity.properties");
VelocityContext vc = new VelocityContext();
vc.put("date", new Date());
Bean bean = new Bean();
bean.setMessage("hello world");
List list = new ArrayList();
list.add("hello");
list.add("world");
bean.setMessages(list);
vc.put("hello", bean);
String[] array = new String[]{"1.○", "2.△", "3.×"};
vc.put("array", array);
Template template = Velocity.getTemplate("hello.vm");
Writer writer = new OutputStreamWriter(System.out);
template.merge(vc, writer);
writer.close();
}
}
値の設定はVelocityContextのputメソッドで行う。いろいろな型に対応している。実行結果 ■普通に設定 ただいまの時刻はMon May 09 11:35:06 JST 2005です。 ■インスタンスのプロパティ読み込み hello world ■Listループ hello world ■Arrayループ 1.○ 2.△ 3.× Advertisement |
ショートカット・634・このカテゴリのトップページに戻る ・634labs UIコレクションギャラリー サイト検索Y!ログール |