機能SAMPLE.4 「EzServlet/繰り返し項目で押されたボタンを知る方法」


前回の繰り返し項目がわかれば、メチャこれも簡単!!!
まず、HTMLで繰り返しの中に「ボタン」を設定します。前回のHTMLに繰り返し「ボタン」を追加しましょう。。。


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


<html>
<head></head>
<body>
<form method="POST">
<tg:out name="oyafield"><br>
<tg:loop name="Item">
<input type="button" value="選択" name="select">,
<tg:out name="kofield1">,
<tg:out name="kofield2"><br>
</tg>
</form>
</body>
</html>


DTOクラスは前回と変わらないので省略します。


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);
}


/** 繰り返しの「選択」ボタンが押された時に呼び出されるメソッドです。
      何番目のボタンが押されたかが、シグニチャ「int i」で通知されます。*/

public void select(int i, Hoge hoge) {
System.out.println(i+"番目の「選択」ボタンが押されました。");
// 表示するHtmlのDTOをセットします。
response.setPage(hoge);
}

}

繰り返しの何番目のボタンが押されたかが、「int i」で通知されます。
1番目の「選択」ボタンが押された場合は「0」、3番目のボタンが押された場合は「2」が受け渡されます。

これで、繰り返し項目で押されたボタンを知る方法ができました。


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


--追記--
繰り返しの中の「繰り返し」、つまりネストした繰り返しの場合は、シグニチャを「int i, int j」の様にすればOKです。
しかも、ネストに制限はありません。