GWT

时间:2017-03-22 16:51:19

标签: javascript java gwt

我遇到了一个与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);
    }

}

复选框在这种情况下效果很好。

结果如下所示:

enter image description here

和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

祝你好运

1 个答案:

答案 0 :(得分:2)

单选按钮根据其名称进行分组,因此您需要为每个组指定不同的名称(将其传递给RadioButtonComponent或在其中生成唯一的名称)