Как вручную установить значение RadioGroup в калитке? - PullRequest
4 голосов
/ 20 апреля 2010

Я пытаюсь изменить выбранную радиокнопку в радиогруппе 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]]

Как правильно это сделать? Я не нахожу много документации по калитке для этого онлайн.

1 Ответ

5 голосов
/ 20 апреля 2010

Чтобы использовать addComponent для обновления Ajax вашего компонента myRadioGroup, вам нужно добавить

myRadioGroup.setOutputMarkupId(true);

Вот пример примера кода ассортимента калитки и немного документации .

...