you really should read the javadoc for radiogroup -igor
On Tue, Apr 15, 2008 at 1:20 AM, Goran Novak <[EMAIL PROTECTED]> wrote: > > Thanks, > > I got it to work but I dont't understand why does RadioGroup has to have its > own model. RadioGroup has a constructor "RadioGroup(java.lang.String id)", > why does it exist if you can't create RadioGroup without its own model. It > seems somewhat misleading. > > Here is the solution if someone else encounters this problem: > > WebPage and Form: > > public class TestRadio extends WebPage { > public TestRadio() { > add(new SomeForm("form")); > } > > class SomeForm extends Form { > public SomeForm(String id) { > super(id, new CompoundPropertyModel(new > TestFormModel())); > > TestRadioModel testRadioModel = new TestRadioModel(); > RadioGroup radioGroup = new RadioGroup("radioGroup", > new PropertyModel( > testRadioModel, "radioGroup")); > add(radioGroup); > > radioGroup.add(new Radio("radio1", new > Model("some"))); > radioGroup.add(new Radio("radio2", new > Model("none"))); > > } > > protected void onSubmit() { > super.onSubmit(); > > RadioGroup radioGroup = (RadioGroup)get("radioGroup"); > > String model = (String) radioGroup.getModelObject(); > System.out.println(model);//prints out "some" or > "none" > } > } > } > > Html: > <form wicket:id="form"> > > <input type="radio" wicket:id="radio1" /> > <input type="radio" wicket:id="radio2" /> > > <input type="submit"/> > </form> > > RadioGroup Model: > > public class TestRadioModel { > private String radioGroup; > > private String radio1; > private String radio2; > > // plus getters and setters > > > } > > > > Michael O'Cleirigh wrote: > > > > Hi Goran, > >> > >> I have a form with a radio group. Everithing works (page renders without > >> errors) but I can't get selected radio in forms onSubmit method. > >> model.getSomeRadioGroup() returns null. > >> > >> It probably some logical error using the models. Does radioGroup have to > >> have its own model or something like that. > >> > >> > > RadioGroup does need to have its own model and it also needs to be > > included in the markup and it needs to wrap (be the parent) of the > > specific radio's. > > > > If your radio's are directly adjacent in the markup you might find the > > RadioChoice class easier since you can just set 1 model and pass in a > > list of the options. > > > > > > > >> Here is simplified example: > >> > >> FORM: > >> public SomeForm(String id) { > >> super(id, new CompoundPropertyModel(new SomeModel())); > >> RadioGroup radioGroup = new RadioGroup("someRadioGroup"); > >> add(radioGroup); > >> > >> radioGroup.add(new Radio("radio1")); > >> radioGroup.add(new Radio("radio2")); > >> radioGroup.add(new Radio("radio3")); > >> > >> } > >> > > You need to set a model value for each radio since wicket will do a > > radioGroup.modelObject = selectedRadio.modelObject when the form is > > submitted. > > > > > > > >> > >> protected void onSubmit() { > >> super.onSubmit(); > >> SomeModel model = (SomeModel) getModelObject(); > >> System.out.println(model.getSomeRadioGroup()); // This returns null > >> System.out.println(model.getRadio1());// This returns null > >> System.out.println(model.getRadio2());// This returns null > >> System.out.println(model.getRadio3());// This returns null > >> } > >> > >> FORMS MODEL: > >> public class EmailSettingsModel { > >> > >> private String radio1; > >> > >> private String radio2; > >> > >> private String radio3; > >> > >> private String someRadioGroup; > >> > >> //... plus getters and setters > >> } > >> > >> > > I would change this so that the options for the radio were and > > enumeration: > > > > public enum EmailOptions { OPTION_1, OPTION_2, OPTION_3; } > > > > then just use a regular Model to hold the values: > > > > FORM: > > public SomeForm(String id) { > > super(id, new CompoundPropertyModel(new Model())); > > RadioGroup radioGroup = new RadioGroup("someRadioGroup", new Model > > (EmailOptions.OPTION_1); > > add(radioGroup); > > > > radioGroup.add(new EmailOptionRadio("radio1", new Model > > (EmailOptions.OPTION_1))); > > radioGroup.add(new EmailOptionRadio("radio2", new Model > > (EmailOptions.OPTION_2))); > > radioGroup.add(new EmailOptionRadio("radio3", new Model > > (EmailOptions.OPTION_3))); > > > > } > > > > Where emailOptionRadio overrides the Component.getConverter(Class c) > > method to return an IConverter for the EmailOptions enumeration like: > > > > /* (non-Javadoc) > > * @see org.apache.wicket.Component#getConverter(java.lang.Class) > > */ > > @Override > > public IConverter getConverter(Class type) { > > > > return new IConverter () { > > > > /* (non-Javadoc) > > * @see > > org.apache.wicket.util.convert.IConverter#convertToObject(java.lang.String, > > java.util.Locale) > > */ > > @Override > > public Object convertToObject(String value, Locale > locale) { > > > > if (value.equals("1")) { > > return EmailOptions.OPTION_1; > > } > > else > > if (value.equals("2")) { > > return EmailOptions.OPTION_2; > > } > > if (value.equals("3")) { > > return EmailOptions.OPTION_3; > > } > > else return null; > > > > > > > > } > > > > /* (non-Javadoc) > > * @see > > org.apache.wicket.util.convert.IConverter#convertToString(java.lang.Object, > > java.util.Locale) > > */ > > @Override > > public String convertToString(Object value, Locale > locale) { > > > > EmailOptions opts = (EmailOptions)value; > > > > if (opts == EmailOptions.OPTION_1) > > return "1"; > > if (opts == EmailOptions.OPTION_2) > > return "2"; > > > > if (opts == EmailOptions.OPTION_3) > > return "3"; > > > > else return ""; > > > > }}; > > } > > > > > >> HTML: > >> > >> <form wicket:id="form"> > >> > >> <input wicket:id="radio1" type="radio"/> > >> <input wicket:id="radio2" type="radio"/> > >> <input wicket:id="radio3" type="radio"/> > >> > >> </form> > >> > >> > > > > Mike > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > -- > View this message in context: > http://www.nabble.com/Radio-group%2C-model-tp16678100p16697337.html > > Sent from the Wicket - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]