Я использую Wicket и хотел бы создать сетку из радио-кнопок, используя HTML, как показано ниже (внешние списки будут отображаться вертикально, внутренние списки будут отображаться горизонтально).
Количество групп является переменным - это могут быть ABC, ABCD, ABCDE и т. Д.
Я бы хотел, чтобы переключатели были сгруппированы по вертикали.
<ul>
<li>
<ul>
<li><input type="radio" name="A"></li>
<li><input type="radio" name="B"></li>
<li><input type="radio" name="C"></li>
</ul>
</li>
<li>
<ul>
<li><input type="radio" name="A"></li>
<li><input type="radio" name="B"></li>
<li><input type="radio" name="C"></li>
</ul>
</li>
<li>
<ul>
<li><input type="radio" name="A"></li>
<li><input type="radio" name="B"></li>
<li><input type="radio" name="C"></li>
</ul>
</li>
</ul>
К сожалению, похоже, что RadioGroup
позволяет группировать только радиокнопки в соответствии с группировкой, определенной их расположением.
Например:
RadioGroup group = new RadioGroup("radioGroupA");
group.add( new Radio("myradio", new Model(1)) ;
проблема в том, что я не могу выложить элементы так, как хочу.
Есть ли другой способ?Вручную указав имя и собрав результаты?
ОБНОВЛЕНИЕ: я заметил, что Radio
может принимать RadioGroup
в качестве параметра.Таким образом, можно сделать что-то вроде:
// create some groups
for (0..n) {
RadioGroup group = new RadioGroup("myRadioGroup", new Model { .. } );
groupArray.add(group)
}
//create a ListView for the RadioGroups so we can attach them to page
ListView radioListView = ListView("radioGroupList") { populate from groupArray }
add(radioListView);
// create our grid of radio buttons
// outer -> rows
for (0..x) {
// inner -> columns
for (0..n)
// supply group from our groupArray
add( new Radio("myradio", new Model(1), groupArray.get(n) ));
}
}
Затем я могу добавить Radio
s и RadioGroup
s к форме независимо от макета, что дает желаемый эффект с точки зрения группировки.
<form>
<span wicket:id="radioGroupList">
<span wicket:id="radioGroup"/>
</span>
<ul>
<li><radio wicket:id="myradio"/></li>
Но теперь, когда я отправляю сообщение, я получаю следующую ошибку:
WicketMessage: отправлено значение http post [radio33] для компонента RadioGroup [2: tContainer: list:2: tPanel: myForm: orderRadioGroupList: 0: orderRadioGroup] недопустима, поскольку она не содержит относительный путь к компоненту Radio.Из-за этого компонент RadioGroup не может разрешить выбранный компонент Radio, на который указывает недопустимое значение.Возможная причина заключается в том, что иерархия компонентов изменилась между рендерингом и отправкой формы.
Есть идеи, что это значит?
Слово "компонент" с ошибкой предполагает, что оно встречается не так часто.*
Я использую Wicket 1.4.12.
Я нашел этот билет Apache, который выглядит связанным: https://issues.apache.org/jira/browse/WICKET-1055