Getting a Wicket text box's value in an AJAX onchange event Getting a Wicket text box's value in an AJAX onchange event ajax ajax

Getting a Wicket text box's value in an AJAX onchange event


Use an OnChangeAjaxBehavior, and your component model will be updated automatically. You can query the value by using 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();        }    }));

Actually, OnChangeAjaxBehavior is pretty aggressive because it registers a key listener, so in most cases new AjaxFormComponentUpdatingBehavior("onchange"){...} will work just as well, if you just want the onchange event.