kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

Teeda テーブルの内容から選択リストを作成する

TeedaS2Daoを使用して、テーブルの内容から選択リストを画面表示する方法をメモしておきます。

概要

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になります。Mapのキーと値はたぶんString型だと思います。Sqlアノテーションで必要なデータの取得方法を指定します。Teedaのselectタグの仕様に従い、selectタグのvalue属性に設定したいものを、カラム名"value"で取得し、selectタグの表示文字列に設定したいものを、カラム名"label"で取得します。

追加メソッド

	@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>

動作確認環境