0

我正在使用 GwtBootstrap3 0.9.3 并使用 UiBinder 在我的身上放置了一些小部件。org.gwtbootstrap3.client.ui.CheckBox 类的复选框和 org.gwtbootstrap3.client.ui.Button 的按钮工作正常。当我单击它们时,它们会触发 ClickEvents。

但是当我点击它们时,org.gwtbootstrap3.extras.select.client.ui.MultipleSelect 和 org.gwtbootstrap3.extras.select.client.ui.Select 类的选择不会触发任何事件。他们不应该在进行或更改选择时触发 com.google.gwt.event.logical.shared.ValueChangeEvent 吗?

事件处理程序如下所示:

@UiHandler("simpleSelect")
void onValueChangeSimple(ValueChangeEvent<String> event) {
    do.somethingSimple();
}

@UiHandler("multiSelect")
void onValueChangeMultiple(ValueChangeEvent<List<String>> event) {
    do.somethingMultiple();
}

当我单击这些小部件时,永远不会触发 ValueChangeEvent。

但是当我以编程方式设置值时

    simpleSelect.setValue("Item 1" , true);

ValueChangeEvent 将被触发并 do.somethinSimple() 将被调用。

出了什么问题?如何使用 UI 使这些选择小部件触发 ValueChangeEvents?

4

1 回答 1

0

我使用 GwtBootstrap3Extras 0.9.3 + GWT 2.7 + SuperDevMode 测试了以下实现。

继承 *.gwt.xml:<inherits name="org.gwtbootstrap3.extras.select.Select"/>

*.ui.xml 与命名空间xmlns:select="urn:import:org.gwtbootstrap3.extras.select.client.ui

<select:Select ui:field="simpleSelect">
    <select:Option>A</select:Option>
    <select:Option>B</select:Option>
    <select:Option>C</select:Option>
</select:Select>
<select:MultipleSelect ui:field="multiSelect">
    <select:Option>A</select:Option>
    <select:Option>B</select:Option>
    <select:Option>C</select:Option>
</select:MultipleSelect>

查看实现:

@UiField
Select simpleSelect;

@UiField
MultipleSelect multiSelect;

@UiHandler("simpleSelect")
void onValueChangeSimple(ValueChangeEvent<String> event) {
    GWT.log("single changed");
}

@UiHandler("multiSelect")
void onValueChangeMultiple(ValueChangeEvent<List<String>> event) {
    GWT.log("multi changed");
}

这工作正常。每当我从 Select 或 MultipleSelect 中选择一个选项时,都会将消息记录到浏览器控制台。如果您以相同的方式配置项目,它应该可以工作。否则你有另一个问题(那么你应该发布你的 UiField 定义,*ui.xml,...)

于 2016-08-05T12:00:30.613 回答