final Address address = new Addres();
Form form = new Form("addressInputForm");
this.add(form);
form.setOutputMarkupId(true);
FormComponent fc;
fc = new RequiredTextField("street", new AddressModel(new Model(address), AddressModelType.STREET_MODEL));
fc.add(StringValidator.maximumLength(30));
fc.setLabel(new ResourceModel("label.street"));
form.add(fc);
form.add(new AjaxButton("submitAddressInput", form){
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form){
System.out.println(address.toString());
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form){
//
}
});
AjaxEventBehavior behavior = new AjaxEventBehavior("keyup"){
@Override
protected void onEvent(AjaxRequestTarget target) {
System.out.println(address.toString());
}
};
form.add(behavior);
この問題に関する小さな例を作成しました。
基本的に、人が「street」というフィールドに値を挿入すると、コードから予想できるように、動作がアクティブになり、onEvent() メソッドが実行されます。onEvent() 変数アドレスが出力されます。残念ながら、address.street の値は NULL です。したがって、「Street: NULL」が出力されます。
しかし、データを送信する ajax ボタンをクリックすると、Wicket は AddressModel を介してフォームからすべてのデータをアドレス変数にロードします。そこでの最終結果は、たとえば「Street: Bond street」になります。
私の質問は、AjaxEventBehavior の場合にアドレス変数にデータを保存するプロセスをどのように開始できるかということです。