web-dev-qa-db-ja.com

AJAX onchangeイベントでWicketテキストボックスの値を取得する

ユーザーがWicketテキストフィールドに数値を入力するとき、AJAX onchangeイベントで入力された値をキャプチャする必要があります。これを行うにはどうすればよいですか?

16
sangameshwar

OnChangeAjaxBehavior を使用すると、コンポーネントモデルが自動的に更新されます。 component.getDefaultModelObject()を使用して値をクエリできます

_add(new TextField<String>(id, someModel)
    .add(new OnChangeAjaxBehavior(){

        private static final long serialVersionUID =
            2462233190993745889L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target){

            // Maybe you want to update some components here?

            // Access the updated model object:
            final Object value = getComponent().getDefaultModelObject();
            // or:
            final String valueAsString =
                ((TextField<String>) getComponent()).getModelObject();
        }
    }));
_

実際、OnChangeAjaxBehaviorはキーリスナーを登録するため、かなり積極的です。したがって、onchangeイベントが必要な場合は、ほとんどの場合、new AjaxFormComponentUpdatingBehavior("onchange"){...}も同様に機能します。

32