2010-04-20 3 views
4

J'essaye de changer le bouton radio choisi dans un Wicket RadioGroup pendant un AjaxEventBehavior mais ne peux pas comprendre comment faire ainsi. Spécifiquement, quand un utilisateur tape du texte dans une zone de texte, je veux changer le bouton radio sélectionné en celui que je spécifie. Comment est-ce que tu fais ça?Comment définir manuellement une valeur RadioGroup dans le portillon?

Voici ce que j'ai jusqu'à présent (il se bloque sur 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); 

est ici l'exception qui est levée. java.lang.IllegalArgumentException: impossible de mettre à jour le composant dont la propriété setOutputMarkupId n'est pas définie sur true. Composant: [MarkupContainer [ID de composant = myRadioGroup]]

Quelle est la bonne façon de procéder? Je ne trouve pas beaucoup de documentation de guichet pour cela en ligne.

Répondre

5

Pour utiliser AddComponent d'avoir un rafraîchissement Ajax de votre composant myRadioGroup, vous devez ajouter

myRadioGroup.setOutputMarkupId(true); 

Voici quelques example code des choses portillons assortis et certains documentation.

Questions connexes