I forgot to mentions this is with wicket 1.4.x. Ernesto
On Thu, Dec 30, 2010 at 1:53 PM, Ernesto Reinaldo Barreiro <reier...@gmail.com> wrote: > Hi, > > Apologies for the somewhat lengthy e-mail. > > Consider the following situation > > 1-I have a form with a RadioGroup, several Radio buttons, an AJAX > submit button and some AJAX links that fetch "information" that can be > used to repaint the form and the RadioGroup. > > In simplified code more or less this. > > public class RadioPage extends WebPage { > > private static final long serialVersionUID = 1L; > > private WebMarkupContainer context; > > private Gender gender; > > private FeedbackPanel feedbackPanel; > > public RadioPage() { > Form<Void> form = new Form<Void>("form"); > add(form); > context = new WebMarkupContainer("context"); > context.setOutputMarkupId(true); > form.add(context); > > > RadioGroup<Gender> gender = new RadioGroup<Gender>("gender", > new PropertyModel<Gender>(this,"gender")); > > gender.setRequired(true); > context.add(gender); > // hombre > Radio<Gender> sexoH = new Radio<Gender>("male", new > Model<Gender>(Gender.MALE), gender); > gender.add(sexoH); > > Radio<Gender> sexoM = new Radio<Gender>("female", new > Model<Gender>(Gender.FEMALE), gender); > gender.add(sexoM); > > add(new AjaxLink<Void>("makeMale") { > > private static final long serialVersionUID = 1L; > > �...@override > public void onClick(AjaxRequestTarget target) { > RadioPage.this.gender = Gender.MALE; > if(target != null) { > target.addComponent(context); > } > } > }); > > add(new AjaxLink<Void>("makeFemale") { > > private static final long serialVersionUID = 1L; > > �...@override > public void onClick(AjaxRequestTarget target) { > RadioPage.this.gender = Gender.FEMALE; > if(target != null) { > target.addComponent(context); > } > } > }); > > form.add(new AjaxSubmitLink("submit") { > > private static final long serialVersionUID = 1L; > > �...@override > protected void onSubmit(AjaxRequestTarget target, > Form<?> form) { > form.info("Gender was set to " + > RadioPage.this.gender); > target.addComponent(feedbackPanel); > } > > �...@override > protected void onError(AjaxRequestTarget target, > Form<?> form) { > target.addComponent(feedbackPanel); > } > }); > > feedbackPanel = new FeedbackPanel("feedback"); > feedbackPanel.setOutputMarkupId(true); > add(feedbackPanel); > } > > public Gender getGender() { > return gender; > } > > public void setGender(Gender gender) { > this.gender = gender; > } > } > > -----------------RadioPage.html-------------- > > <html > xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> > <head> > <title>Test</title> > </head> > <body> > <form wicket:id="form"> > <div wicket:id="context"> > <span wicket:id="gender"> > <input type="radio" wicket:id="male"/> > <label for="radio3">Male</label> > <input type="radio" > wicket:id="female"/> > <label for="radio4">Female</label> > </span> > </div> > <input wicket:id="submit" type="submit" value="AJAX > submit"/> > </form> > <span wicket:id="feedback"></span> > <p> > Updating RadioGroup via AJAX does not work: > <a wicket:id="makeMale">Make male</a> and <a > wicket:id="makeFemale">Make female</a>. > </p> > </body> > </html> > > and > > public enum Gender { > FEMALE, > MALE; > } > > > 2-You click on the AJAX submit button without selecting any of the > radio buttons. This seems to set the rawinput of RadioGroup to null. > 3-You click now on one of the AJAX links (Make male or Make female in > the example) in order to fetch the "information" and repaint the form > via AJAX. But radios checked condition is not updated:-( > > This seems to be because of following code on Radio.onComponentTag(): > > // compare the model objects of the group and self, if > the same add the > // checked attribute, first check if there was a raw input on > the group. > if (group.hasRawInput()) > { > String rawInput = group.getRawInput(); > if (rawInput != null && rawInput.equals(value)) > { > tag.put("checked", "checked"); > } > } > > If I rewrite my gender RadioGroup as > > RadioGroup<Gender> gender = new RadioGroup<Gender>("gender", > new PropertyModel<Gender>(this,"gender")) { > > private static final long serialVersionUID = 1L; > > �...@override > public boolean isInputNullable() { > return false; > } > }; > > "everything" seems to be working fine. Am I missing some important > point on how to use radio groups or is this a bug? Shall I file a > jira issue for this? > > Thanks in advance, > > Ernesto > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org