機能SAMPLE.3 「EzServlet/繰り返し項目を作成する方法」


繰り返し項目を作成する方法は、HTMLで繰り返したい箇所を「<tg:loop name=""></tg>」タグで囲みます。
つまり「<tg:loop name="">」と「</tg>」の間には、繰り返したい内容を記述するだけでOKです。


では、HTMLとDTOの関係について説明します。繰り返し項目は、どの様にDTOに記述すればよいのでしょうか?


答えは「<tg:loop name="">」タグの"name属性"で指定した名称を、クラス名とするインナークラスをDTOに作成します。そして、DTOのプロパティーとして、インナークラスを格納するためのListを作成すれば良いのです。
尚、Listのプロパティー名は、「インナークラス名のキャメル記法 + List」にします。



以下のHTMLを例に説明します。ファイル名は「Hoge.html」です。


<html>
<head></head>
<body>
<form method="POST">
<tg:out name="oyafield"><br>
<tg:loop name="Item">
<tg:out name="kofield1"></tg>,
<tg:out name="kofield2"></tg><br>
</tg>

</form>
</body>
</html>


DTOクラスは以下の様になります。

public class Hoge implements Serializable {
	/** Hogeに対応するコントロラークラスを保持する属性です */
	public static final Class CONTROLLER_CLASS = HogeController.class;
	// 出力項目「oyafield」です。
	public String oyafield;
	// 繰り返し項目のインナークラスを格納するリストです。
	public List itemList = new ArrayList();

	// 繰り返し項目のプロパティーを保持するインナークラスです。
	public class Item implements Serializable {
		// 出力項目「kofield1」です。
		public String kofield1;
		// 出力項目「kofield2」です。
		public String kofield2;
	}
}


CONTROLLERクラスは以下の様になります。

public class HogeController {
	/** 初期画面を出力するメソッドです */
	public void index(Hoge hoge) {
		// 1つ目の繰り返し項目インスタンス(Item)を生成します。
		Item item = new Item();
		item.kofield1 = "1";
		item.kofield2 = "あああ";
		// 繰り返し項目インスタンスをHogeに追加します。
		hige.itemList.add(item);

		// 2つ目の繰り返し項目インスタンス(Item)を生成します。
		item = new Item();
		item.kofield1 = "2";
		item.kofield2 = "いいい";
		// 繰り返し項目インスタンスをHogeに追加します。
		hige.itemList.add(item);

		// 表示するHtmlのDTOをセットします。
		response.setPage(hoge);
	}
}

これで、繰り返し項目の作成が出来ました。

超かーんたーん(o^∀^)oネッ♪