[Wicket-ja-user 497] Re: 表からのデータ取得について

Back to archive index

Kotaro Ishizaki k_taro.****@sea*****
2011年 1月 31日 (月) 21:43:53 JST


浅見様

石崎です。

TextFieldからDropDownChoiceに変更したということでしたら
CompoundPropertyModelを使用しているので
DropDownChoiceに対してChoiceRendererを実装してあげればいいと思います。

テストしたソースを記載します。
参考までにどうぞ。
以上です。

public class WicketMlPage extends WebPage {

    // ドロップダウン選択リスト
    final List<DropItem> choiceList = Arrays.asList( new DropItem("1", 
"Fast"),
            new DropItem("2", "Slow"));

    public WicketMlPage(){

        //form
        Form<Void> form = new Form<Void>("form");
        add(form);

        //テーブルitem
        final ListView<ListElement> view = new 
ListView<ListElement>("searchlist", getSearchList()){
            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(final ListItem<ListElement> item) {
                final ListElement elem = item.getModelObject();
                item.setModel(new CompoundPropertyModel<ListElement>(elem));
                item.add(new Label("id"));
                //ドロップダウン選択
                item.add(new DropDownChoice<DropItem>("dropChoice", 
choiceList,
                        new IChoiceRenderer<DropItem>(){
                            private static final long serialVersionUID = 1L;
                            public Object getDisplayValue(DropItem object) {
                                return object.label;
                            }
                            public String getIdValue(DropItem object, int 
index) {
                                return object.cd;
                            }
                        }));

                item.add(new TextField<String>("nameLabel"));
            }

        };
        form.add(view);

        //submitボタン
        form.add(new Button("submitBtn"){
            private static final long serialVersionUID = 1L;

            @Override
            public void onSubmit() {

                System.out.println("submit...");

                for(ListElement list :  view.getModelObject() ){
                    System.out.println("id=" + list.id );
                    System.out.println("nameLabel=" + list.nameLabel );
                    System.out.println("dropChoice=" + 
list.dropChoice.getLabel() );
                }

                System.out.println();

                super.onSubmit();
            }
        });

    }

    //リストデータ生成(DBからの取得)
    private ArrayList<ListElement> getSearchList() {
        ArrayList<ListElement> list = new ArrayList<ListElement>();
        list.add(new ListElement("car", "車"));
        list.add(new ListElement("bus", "バス"));
        list.add(new ListElement("train", "電車"));
        return list;
    }

    // DropItemの項目
    public class DropItem  implements IClusterable {
        private static final long serialVersionUID = 1L;
        private String cd;
        private String label;
        public DropItem(String cd, String label){
            this.cd=cd;
            this.label=label;
        }

        (ゲッターセッターのため省略)


    }

    public class ListElement implements IClusterable {
        private static final long serialVersionUID = 1L;
        private String id;
        private String nameLabel;
        private DropItem dropChoice;

        public ListElement(String id, String name){
            this.id=id;
            this.nameLabel=name;
            this.dropChoice = new DropItem("1", "Fast");
        }

        (ゲッターセッターのため省略)

    }

}




Wicket-ja-user メーリングリストの案内
Back to archive index