機能拡張2:選択リストをカスタマイズ †1.選択リスト カスタマイズクラス作成 †選択リストクラスを継承したクラスを作成する。 †/** * 所属部門マスター 選択リスト カスタマイズクラス<BR> * @author * */ public class GroupmasterSelectListEx extends GroupmasterSelectList{ } 選択リストをデータベースより取得する直前にDAOに対して検索条件や並び順を設定するとき、又は選択リストに未選択項目が必要なとき †選択リスト カスタマイズクラスに protected void preSearch(DaoBase dao) のオーバーライドを行う @Override /** * 選択リストを部門コードの降順にする * 選択リストの先頭に全部門を追加 * */ protected void preSearch(DaoBase dao){ // DBから取得のソート順を部門コードの降順に設定 dao.addSortDescParameter("groupcode"); // 選択リストの先頭に全部門を追加 selectList.add("全部門", ""); } 表示される選択リストの値を編集したいとき †選択リスト カスタマイズクラスに protected void addSelectListItem(Grouopmaster record) のオーバーライドを行う @Override /** * 選択リストの表示値は、部門コード+半角スペース+部門名称にする * */ protected void addSelectListItem(Grouopmaster record) { String optionValue = DaoBase.changeString(record.getGroupName()); String sendValue = DaoBase.changeString(record.getGroupCode()); if(optionValue == null && sendValue == null){ selectList.add(""); } else if(optionValue == null && sendValue != null){ selectList.add(sendValue); } else if(optionValue != null && sendValue == null){ selectList.add(optionValue); } // 表示値に部門コード+半角スペースを付加 selectList.add(sendValue + " " + optionValue, sendValue); } データベースより取得した選択リストに対して何らかの処理を行いたいとき †選択リスト カスタマイズクラスに protected SelectList afterSearch(SelectList selectList) のオーバーライドを行う @Override /** * 選択リストの表示値に連番を追加 * */ protected SelectList afterSearch(SelectList selectList) { SelectList newList = new SelectList(); String optionValue; String sendValue; int i = 0; for (SelectListItem item:selectList.getSelectListItems()){ // 表示値に連番を付加 optionValue = i + " : " + item.getOptionValue(); sendValue = item.getSendValue(); newList.add(optionValue, sendValue); i++; } return newList; } 2.入力画面/変更画面Javaクラス画面でカスタマイズした選択リストの設定 †入力画面/変更画面Javaクラスの、コンストラクタ // 選択リストの設定 // 所属部門マスター 選択リスト カスタマイズクラス GroupmasterSelectListEx groupItem = new GroupmasterSelectListEx(); SelectList field_groupCode_select_list = groupItem.getSelectList(); fm.setSelectList("field_groupCode", field_groupCode_select_list); // 所属部門 |