我遇到了一个与RadioButtons相关的奇怪案例GWT。我构建了由多个无线电组成的组件,我们称之为X.默认情况下,选择X中的一个无线电。但是如果我在一个视图中使用此组件N次,那么仅在最后的X默认选择中起作用。举个例子:
对于instace 让我们构建聚合器ui
<g:HTMLPanel>
<cc:RadioButtonComponent ui:field="one"/>
<br/>
<cc:RadioButtonComponent ui:field="two"/>
</g:HTMLPanel>
类
public class AggregatorComponent extends Composite {
private static AggregatorComponentUiBinder uiBinder = GWT.create(AggregatorComponentUiBinder.class);
interface AggregatorComponentUiBinder extends UiBinder<Widget, AggregatorComponent> {
}
@UiField
RadioButtonComponent one;
@UiField
RadioButtonComponent two;
public AggregatorComponent() {
initWidget(uiBinder.createAndBindUi(this));
}
}
和示例RadioButtonComponent ui
<g:HTMLPanel>
<g:RadioButton ui:field="radioOne" name="radioGroup"/>
<g:RadioButton ui:field="radioTwo" name="radioGroup"/>
<br/>
<g:CheckBox ui:field="checkBox1"/>
</g:HTMLPanel>
和班级
public class RadioButtonComponent extends Composite {
private static RadioButtonComponentUiBinder uiBinder = GWT.create(RadioButtonComponentUiBinder.class);
interface RadioButtonComponentUiBinder extends UiBinder<Widget, RadioButtonComponent> {
}
@UiField
RadioButton radioOne;
@UiField
RadioButton radioTwo;
@UiField
CheckBox checkBox1;
public RadioButtonComponent() {
initWidget(uiBinder.createAndBindUi(this));
radioOne.setValue(true);
checkBox1.setValue(true);
}
}
复选框在这种情况下效果很好。
结果如下所示:
和unseleced无线电确实已经检查过了
<input type="radio" name="radioGroup" value="on" id="gwt-uid-6" tabindex="0" checked="">
但是这一个下方有相同的检查值,只有id不同。
问题
这是一个错误吗? 如何克服这个障碍?
在GWT 2.8 Java 8上测试 Chrome版本56.0.2924.87,FireFox 56和IE 11
祝你好运
答案 0 :(得分:2)
单选按钮根据其名称进行分组,因此您需要为每个组指定不同的名称(将其传递给RadioButtonComponent
或在其中生成唯一的名称)