Получение значения текстового поля Wicket в событии AJAX onchange - PullRequest
16 голосов
/ 06 апреля 2011

Когда пользователь вводит число в текстовое поле Wicket, мне нужно зафиксировать значение, введенное в событии AJAX onchange.Как я могу это сделать?

1 Ответ

32 голосов
/ 06 апреля 2011

Используйте 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 довольно агрессивен, потому что он регистрирует ключевого слушателя, поэтому в большинстве случаев new AjaxFormComponentUpdatingBehavior("onchange"){...} будет работать так же хорошо, если вы простохочу onchange событие.

...