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]

Reply via email to