Select和MultipleSelect不会触发事件

时间:2016-08-05 07:53:49

标签: java gwt gwtbootstrap3

我正在使用GwtBootstrap3 0.9.3并使用UiBinder放置了一些Widgets。类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();
}

当我点击这些widges时,ValueChangeEvent永远不会被触发。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

继承* .gwt.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> 的ui.xml:

@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");
}

ViewImplementation:

class MenuView: UIView {

    var addButton: AddButton!
    var settingsButton: SettingsButton!

    // ........

    func setConstraints (withBarReference reference: NSLayoutYAxisAnchor) {
        NSLayoutConstraints.activateConstraints([
             // ........
             addButton.centerXAnchor.constraintEqualToAnchor(self.centerXAnchor, multiplier: 0.5),
             // ........
             settingsButton.centerXAnchor.constraintEqualToAnchor(self.centerXAnchor, multiplier: 1.5)
        ])
    }

}

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