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