Я пытаюсь изменить выбранную радиокнопку в радиогруппе Wicket во время AjaxEventBehavior, но не могу понять, как это сделать. В частности, когда пользователь вводит какой-либо текст в текстовое поле, я хочу изменить выбранную радиокнопку на указанную мной. Как ты это делаешь?
Вот что у меня пока есть (он падает на addComponent):
myRadioGroup = new RadioGroup("MyNewGroup", new PropertyModel(getPojo(), "selectedGroup"));
Radio internalRadio = new Radio("InternalDirectoryNumber", new Model("Internal"));
myRadioGroup .add(internalRadio);
Radio externalRadio = new Radio("OtherMobileNumber", new Model("External"));
myRadioGroup .add(externalRadio);
TextField myTxtField= new TextField("TextBoxPrivateNumber", new PropertyModel(getVoiceItem(), "privateMobilePhone"));
myTxtField.add( new AjaxEventBehavior( "onKeyUp" )
{
@Override
protected void onEvent(AjaxRequestTarget target)
{
Component component = target.getPage().get("myForm:MyNewGroup").setDefaultModelObject("External");
target.addComponent(component); //this causes an exception
}
});
myRadioGroup .add(myTxtField);
Вот исключение, которое выдается.
java.lang.IllegalArgumentException: не может обновить компонент, который не имеет
Для свойства setOutputMarkupId установлено значение true. Составная часть:
[MarkupContainer [ID компонента = myRadioGroup]]
Как правильно это сделать? Я не нахожу много документации по калитке для этого онлайн.