Re: Radio group, model

2008-10-05 Thread Cristina

A small but important correction... :-)

(e) HTML file: both radio buttons must be under a *span* tag enclosing the
attribute-value pair *wicket:id=options*.

Cristina

-- 
View this message in context: 
http://www.nabble.com/Radio-group%2C-model-tp16678100p19831786.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]



Re: Radio group, model

2008-10-04 Thread Cristina

Hi Goran,

it looks like there's an easier way to use a RadioGroup. As the javadoc
states, ... The model object of the group is set to the model object of the
selected radio component or null if none selected. So you can just do the
following, for instance:

(a) WebPage class:

private enum Option { CREATE, UPDATE };

(b) Form class:

[...]
private RadioGroup options;
[...]

(c) Form constructor:

[...]
options = new RadioGroup(options, new Model());
options.add(new Radio(create, new Model(Option.CREATE)));
options.add(new Radio(update, new Model(Option.UPDATE)));
add(options);
[...]

(d) onSubmit() method:

String option = options.getModelObjectAsString();
if (option.equals(Option.CREATE)) {
[...]
} else { // UPDATE...
[...]
}

(e) HTML file:

[...]
input type=radio wicket:id=createCreate Document/input
input type=radio wicket:id=updateUpdate Document/input
[...]

Hope this helps,

Cristina



Goran Novak 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:
 
 [...]
 

-- 
View this message in context: 
http://www.nabble.com/Radio-group%2C-model-tp16678100p19819311.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]



Re: Radio group, model

2008-04-15 Thread Goran Novak

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
   

Re: Radio group, model

2008-04-15 Thread Igor Vaynberg
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)

Re: Radio group, model

2008-04-14 Thread Michael O'Cleirigh

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]