Когда пользователь вводит число в текстовом поле Wicket, мне нужно записать значение, введенное в событие AJAX onchange
. Как я могу это сделать?
Получение значения текстового поля Wicket в событии AJAX onchange
Ответ 1
Используйте 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
.