Teeda テーブルの内容から選択リストを作成する
Teeda+S2Daoを使用して、テーブルの内容から選択リストを画面表示する方法をメモしておきます。
概要
1.Daoクラスに選択リスト用データ取得メソッドselectValueLabelを追加する。
2.Pageクラスに上記Daoクラスのプロパティを追加する。
3.PageクラスにselectValueLabelの戻り値を保持するプロパティを追加する。
4.Pageクラスのinitializeメソッドまたはprerenderメソッドなどで、selectValueLabelを呼び出し、戻り値を上記3のプロパティに設定する。
5.上記4でinitializeメソッドに処理を追加した場合、取得したデータを保持するため、htmlにhidden項目を追加する。
6.htmlに、selectタグを追加する。
詳細
1.Daoクラスにデータ取得用メソッドを追加します(メソッド名を"selectValueLabel"にするのはお作法なのかな?)メソッドの戻り値は、List
追加メソッド
@Sql("select id as value, name as label from dept order by name") public List<Map<String, String>> selectValueLabel();
結果データのイメージ
Listの1番目の要素 Mapの要素1 キー:"value" 値:deptテーブルのidカラム Mapの要素2 キー:"label" 値:deptテーブルのnameカラム Listの1番目の要素 Mapの要素1 キー:"value" 値:deptテーブルのidカラム Mapの要素2 キー:"label" 値:deptテーブルのnameカラム ・・・
2.Pageクラスに上記のDaoプロパティを追加します。
public DeptDao deptDao;
3.Pageクラスにプロパティを追加します。型は上記で作成したselectValueLabelメソッドの戻り値に合わせます。プロパティ名は、末尾"Items"で終わるようにします。"Items"の前部分は、htmlのselectタグのid属性の値と合わせます。
public List<Map<String, String>> deptIdItems;
4.Pageクラスのinitializeメソッドまたはprerenderメソッドなどで、selectValueLabelを呼び出し、戻り値を上記3のプロパティに設定します。
deptIdItems = deptDao.selectValueLabel();
5.上記4でinitializeメソッドに処理を追加した場合、取得したデータを保持するため、htmlにhidden項目を追加します。次のように記述するそうですが、私は試しませんでした。
<input type="hidden" id="deptIdItemsSave" />
6.htmlに、selectタグを追加します。selectタグのid属性は、PageクラスのdeptIdItemsの"Items"を除いたものと同じにします。
<tr> 〜省略〜 <td><select id="deptId"></select></td> 〜省略〜 </tr>