Recently I've a requirement that I need to have a radio button selection
across multiple row items.
I found some documentation for use of Radio and RadioGroups like this
https://cwiki.apache.org/confluence/display/WICKET/Using+RadioGroups
public class MyObject {
private Integer myInt;
public void setMyInt(Integer myInt) ...
public Integer getMyInt() ...
}
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);
<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>
However, this is for within the same (row) data item. While I worked
things out it turns out that it is feasible to have radio items and
radio groups in a ListView.
But that is is *tricky* like such:
List<Integer> items = new ArrayList<>();
items.add(1);
items.add(2);
MyObject bean=new MyObject();
RadioGroup radioGroup = new RadioGroup("group", new PropertyModel(bean,
"myInt"));
add(radioGroup);
radioGroup.add(new ListView<Integer>("ListView", items) {
@Override
protected void populateItem(ListItem<Integer> item) {
Integer value = item.getModelObject();
Radio<String> radio = new Radio<>("radio",
Model.of(Integer.toString(value)), radioGroup);
item.add(radio);
}
}
<wicket:container wicket:id="group">
<wicket:container wicket:id="ListView">
<input type="radio" wicket:id="radio">
</wicket:container>
</wicket:container>
a few things, I think this could be useful to add in the documents as
examples.
the key is that the listview is added to the radio group !
But that then I've a doubt / question.
If you review docs for the html element radio e.g.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/radio
radio groups is not specifically an element, radio groups are semantic
in that <input type="radio"> elements forms a group
if they have the same /name/ .
Then my doubt is that if I've 2 distinct radio groups, in the same list
view say one is for 'select' and another for 'default', I'm wondering
how that can be achieved?