@634

Jakarta Velocity - QuickStart!(クイックスタート)

Advertisement

QuickStart!

階層

図1:サンプルプログラムの階層
図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コレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール