機能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ネッ♪