【发布时间】:2011-05-03 16:59:11
【问题描述】:
我正在使用 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) ));
}
}
然后我可以独立于布局将Radios 和RadioGroups 添加到表单中,这在分组方面具有预期的效果。
<form>
<span wicket:id="radioGroupList">
<span wicket:id="radioGroup"/>
</span>
<ul>
<li><radio wicket:id="myradio"/></li>
但是现在,当我提交时,我收到以下错误:
WicketMessage:为 RadioGroup 组件 [2:tContainer:list:2:tPanel:myForm:orderedRadioGroupList:0:orderedRadioGroup] 提交的 http post 值 [radio33] 是非法的,因为它不包含 Radio 组件的相对路径。因此,RadioGroup 组件无法解析非法值指向的选定 Radio 组件。一个可能的原因是组件层次结构在渲染和表单提交之间发生了变化。
知道这意味着什么吗?
拼写错误的单词“componment”表明它不常出现。
我正在使用 Wicket 1.4.12。
我发现了这张看起来相关的 Apache 票证:https://issues.apache.org/jira/browse/WICKET-1055
【问题讨论】:
标签: java layout radio-button wicket