You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

RadioGroups contain Radio objects. The model for the RadioGroup is the object property, while the child Radio objects represent the set of values the property can be set to. Let's look at a trivial example, starting with a POJO:

  public class MyObject {
    private Integer myInt;
    public void setMyInt(Integer myInt) ...
    public Integer getMyInt() ...
  }

Next, the relevant snippet from the Form class:

  MyObject bean=new MyObject();
  RadioGroup myInt = new RadioGroup("group", new PropertyModel(bean, "myInt"));
  myInt.add(new Radio("1", new Model(1)));
  myInt.add(new Radio("2", new Model(2)));
  myInt.add(new Radio("3", new Model(3)));
  myInt.add(new Radio("4", new Model(4)));
  add(myInt);

And finally, the markup:

  <span wicket:id="group">
    <input wicket:id="1" type="radio"/>
    <input wicket:id="2" type="radio"/>
    <input wicket:id="3" type="radio"/>
    <input wicket:id="4" type="radio"/>
  </span>

And that's all there is to using a RadioGroup with Radio instances.

Also note that the Radio components do not need to be direct children of the radio group, they can be anywhere in the component hierarchy below the RadioGroup component.

Using RadioGroup within table rows

Sometimes it is useful to have a RadioGroup that encompasses each row. This can be accomplished by using a wicket encloser. In your web page (example uses a data view, but any view will do):

final DataView dataView = new DataView("profile-rows", dp) {
	private static final long serialVersionUID = 1L;

	/**
	* {@inheritDoc}
	*/
	@Override
	protected void populateItem(final Item item) {
		Person person = (Person) item.getModelObject();
		item.add(new Label("first-name", person.getFirstName()));
		item.add(new Label("last-name", person.getLastName()));

		// add the radio group to select system or department (organizational) administrators
		final RadioGroup adminRadioGroup = new RadioGroup("radio-admin", new Model());
		item.add(adminRadioGroup);
		adminRadioGroup.add(new Radio("radio-sys-admin", new Model()));
		adminRadioGroup.add(new Radio("radio-dept-admin", new Model()));
	}
};

And finally, the markup:

<table>
	<thead>
		<tr>
			<th>
				First Name
			</th>
			<th>
				Last Name
			</th>
			<th>
				Sys. Admin
			</th>
			<th>
				Dept. Admin
			</th>
		</tr>
	</thead>
	<tbody>
		<tr wicket:id="profile-rows">
			<td><span wicket:id="first-name">[First Name]</span></td>
			<td><span wicket:id="last-name">[Last Name]</span></td>
			<wicket:container wicket:id="radio-admin">
				<td><input wicket:id="radio-sys-admin" type="radio" /></td>
				<td><input wicket:id="radio-dept-admin" type="radio" /></td>
			</wicket:container>
		</tr>
	</tbody>
</table>
  • No labels