CompoundPropertyModel便利


最初は、モデルの概念に慣れなくてWicket面倒だなぁって思ってたけど
やっと便利さがわかってきました。

クラス名とか変数名は適当です。

private Form<Payment> createInputForm(Payment payment) {
	Form<Payment> form = new Form<CarrierPaymentReport>("inputForm", new CompoundPropertyModel<Payment>(payment));
	form.add(new TextField<Integer>("charge"));
	form.add(new TextField<Integer>("past"));
	form.add(new TextField<Integer>("correction"));
	return form;
}



・TextField(テキストボックス)の初期表示の値を設定したい。
・入力された値を受け取って次に遷移するぺージに渡したい。
この2つのことをやりたいって思った時に、Wicketじゃなかったら自分ならこう考えます(ました)。


ページが表示されるときに、setValue()みたいなメソッドを呼んで初期値を設定して、
次のページに遷移するボタンを押したらgetValue()みたいなメソッドを呼んで値を受け取る。


実際この方法でもできるけど、それじゃWicket使う意味ないですよね。
↑のコードではCompoundPropertyModelのインスタンスをFormの引数に渡しています。

CompoundPropertyModelに値のある場所(ここではPaymentのインスタンスのフィールド名)だけ教えれば、あとはsetValue()、getValue()などする必要ありません。


便利・・・


page自体にデフォルトのモデルを↓で設定することもできる。便利。
setDefaultModel(new CompoundPropertyModel(payment));