[Wicket-ja-user 45] Re: ListView などの繰返し項目内のテキストフィールドなどの値の取得

Back to archive index

maeda aaake****@gmail*****
2008年 3月 27日 (木) 14:11:37 JST


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 メーリングリストの案内
Back to archive index