maeda
aaake****@gmail*****
2008年 3月 27日 (木) 20:07:37 JST
maedaです。 よしおり様、返答ありがとうございます。 LoadableDetachableModelではなくListをListViewクラスに 直接指定した所、無事に値を取得することが出来ました。 ありがとうございました! "Yoshiori SHOJI" <yoshi****@gmail*****> wrote: > よしおりです。 > > > 実際に保持した値というのはどの様に取り出すのでしょうか? > この例ですと、表示時のリクエスト・レスポンスのサイクル後も > 値を保持しておきたい(submit時にもつかう為)ので > LoadableDetachableModel を使わずに > List をそのまま使って、そこから取得しちゃったほうが楽そうです。 > > > 2008/3/27 maeda <aaake****@gmail*****>: > > maedaです。 > > > > よしおりさま回答ありがとうございます。 > > > > 頂いた回答よりソースを変更し遷移時の出力と > > サブミット時に保持クラス(ListModel)のセッターは呼ばれるのですが > > 実際に保持した値というのはどの様に取り出すのでしょうか? > > > > 見当違いかもしれませんが以下の様にソース修正いたしました。 > > populateItemメソッドの引数のListItemをsetModelしています。 > > > > 取り出すときにはbuttonのonSubmitメソッド等でPageableListViewクラスから > > Listを取出したりするのでしょうか? > > > > getList()というメソッドあったので取出してみたのですが画面を開いた時の値が保持 > > されていて変更時の値は取得できませんでした・・・。 > > > > よろしくお願いします。 > > > > //ページクラス > > > > public class Test26 extends WebPage { > > > > PageableListView listview1 > > > > /** > > * 初期処理 > > * > > */ > > public Test26() { > > super(); > > > > final IModel entryListModel = new LoadableDetachableModel() { > > @Override > > protected Object load() { > > return getListModel(); > > } > > }; > > > > Form form = new Form("form"); > > > > this.add(form); > > > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > > table1.setOutputMarkupId(true); > > > > listview1 = new PageableListView("loop1",entryListModel,5) { > > @Override > > protected void populateItem(ListItem listItem) { > > final ListModel buf = (ListModel) listItem.getModelObject(); > > listItem.setModel(new CompoundPropertyModel(buf)); > > listItem.add(new TextField("name")); > > listItem.add(new TextField("id")); > > > > } > > }; > > table1.add(listview1); > > table1.add(new AjaxPagingNavigator("page1", listview1)); > > form.add(table1); > > } > > > > > > /** > > * 一覧表示用のList取得メソッド > > * 本当はDBからとったりする。 > > * > > */ > > private List<ListModel> getListModel() { > > ArrayList<ListModel> list = new ArrayList<ListModel>(); > > ListModel listModel; > > for(int i=0 ;i<=500;i++){ > > listModel = new ListModel(); > > listModel.setId(String.valueOf(i)); > > listModel.setName("name"+String.valueOf(i)); > > list.add(listModel); > > } > > return list; > > } > > } > > > > //保持クラス > > public class ListModel implements Serializable { > > private static final long serialVersionUID = 1L; > > private String name; > > private String id; > > > > public String getId() { > > return id; > > } > > public void setId(String id) { > > this.id = id; > > } > > public String getName() { > > return name; > > } > > public void setName(String name) { > > this.name = name; > > } > > } > > > > > > よろしくお願いします。 > > > > > > > > > > > > > > "Yoshiori SHOJI" <yoshi****@gmail*****> wrote: > > > > > よしおりです。 > > > > > > CompoundPropertyModelで取得するなら > > > populateItem の中で > > > item.setModel(new CompoundPropertyModel(foo)); > > > しなくてはいけないとおもいます。 > > > > > > Test26formクラスに格納するのであれば > > > List や 配列などの Collection をもたせるか、Test26form自体をCollection としてあつかわないと > > > 難しいとおもいます。 > > > > > > > > > 2008/3/26 maeda <aaake****@gmail*****>: > > > > maedaです。 > > > > > > > > ListViewやPageableListViewでテキストフィールド等の入力項目を含む一覧を画面に描画し > > > > 値を変更後にCompoundPropertyModelでサブミット時に値をセットできますでしょうか? > > > > > > > > 以下のソースで > > > > Test26formクラスに格納したいのですが > > > > Test26formクラスにはどのような名称のフィールドが必要なのでしょうか? > > > > > > > > それとも、これでは取得できませんでしょうか? > > > > > > > > public class Test26 extends WebPage { > > > > > > > > private Test26form test26form; > > > > > > > > /** > > > > * 初期処理 > > > > * > > > > */ > > > > public Test26() { > > > > super(); > > > > > > > > final IModel entryListModel = new LoadableDetachableModel() { > > > > @Override > > > > protected Object load() { > > > > return getListModel(); > > > > } > > > > }; > > > > > > > > test26form = new Test26form(); > > > > > > > > Form form = new Form("form",new CompoundPropertyModel(test26form)); > > > > this.add(form); > > > > > > > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > > > > table1.setOutputMarkupId(true); > > > > PageableListView listview1 = new PageableListView("loop1",entryListModel,5) { > > > > @Override > > > > protected void populateItem(ListItem listItem) { > > > > final ListModel buf = (ListModel) listItem.getModelObject(); > > > > listItem.add(new TextField("name" ,new Model(buf.getName()))); > > > > listItem.add(new TextField("id", new Model(buf.getId()))); > > > > } > > > > }; > > > > table1.add(listview1); > > > > table1.add(new AjaxPagingNavigator("page1", listview1)); > > > > form.add(table1); > > > > > > > > form.add(button1); > > > > } > > > > > > > > /** > > > > * 一覧表示用のList取得メソッド > > > > * 本当はDBからとったりする。 > > > > * > > > > */ > > > > private List<ListModel> getListModel() { > > > > ArrayList<ListModel> list = new ArrayList<ListModel>(); > > > > ListModel listModel; > > > > for(int i=0 ;i<=500;i++){ > > > > listModel = new ListModel(); > > > > listModel.setId(String.valueOf(i)); > > > > listModel.setName("name"+String.valueOf(i)); > > > > list.add(listModel); > > > > } > > > > return list; > > > > } > > > > } > > > > > > > > _______________________________________________ > > > > Wicket-ja-user mailing list > > > > Wicke****@lists***** > > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > > > > > > > _______________________________________________ > > > Wicket-ja-user mailing list > > > Wicke****@lists***** > > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicke****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user