Tom*_*Tom 5 java layout wicket radio-button
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎RadioGroup只允许根据其布局定义的分组对单选按钮进行分组.
例如:
RadioGroup group = new RadioGroup("radioGroupA");
group.add( new Radio("myradio", new Model(1)) ;
Run Code Online (Sandbox Code Playgroud)
这个问题是我不能按照我想要的方式布置项目.
还有另外一种方法吗?手动指定名称并收集结果?
更新:我注意到Radio可以将a 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) ));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以独立于布局将Radios和RadioGroups 添加到表单中,这在分组方面具有所需的效果.
<form>
<span wicket:id="radioGroupList">
<span wicket:id="radioGroup"/>
</span>
<ul>
<li><radio wicket:id="myradio"/></li>
Run Code Online (Sandbox Code Playgroud)
但现在,当我提交时,我收到以下错误:
WicketMessage:为RadioGroup组件提交了http post值[radio33] [2:tContainer:list:2:tPanel:myForm:orderedRadioGroupList:0:orderedRadioGroup]是非法的,因为它不包含无线组件的相对路径.由于这个原因,RadioGroup组件无法解析非法值指向的所选Radio组件.可能的原因是渲染和表单提交之间的组件层次结构发生了变化.
知道这意味着什么吗?
拼写错误的单词"componment"表明它不常见.
我正在使用Wicket 1.4.12.
我发现这张看起来相关的Apache票证:https://issues.apache.org/jira/browse/WICKET-1055
你的组件层次结构是错误的。正如 javadoc 所说,Radio 组件必须位于radio group 组件内部。由于您嵌套了Radio Group,因此您必须确保添加的 Radio 组件放置在最内部的RadioGroup 实例内。所以,你的标记应该如下所示:
<span wicket:id="group1">
<span wicket:id="group2">
<span wicket:id="group3">
<ul>
<li><input wicket:id="radio" type="radio"/>
...
Run Code Online (Sandbox Code Playgroud)
当前代码的问题是您使用的是 ListView,它从 RadioGroups 中创建平面列表,而不是嵌套列表。并且,您正在将无线电添加到组的层次结构之外。
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |