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]

Reply via email to