2016-08-05 408 views
0

我正在使用GwtBootstrap3 0.9.3,并使用UiBinder将一些Widgets放在了我的桌面上。类org.gwtbootstrap3.client.ui.CheckBox的复选框和org.gwtbootstrap3.client.ui.Button的按钮都正常工作。当我点击它们时,它们会触发ClickEvents。选择和MultipleSelect不会触发事件

但选择的类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是从来没有发射,当我点击这些widges。

但是,当我编程方式设置的值一样

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

的ValueChangeEvent将被解雇,do.somethinSimple()将被调用。

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

回答

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> 

ViewImplementation:

@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,...)

+0

谢谢你的回答。我的代码与你的代码非常相似。我注意到的唯一区别是,选择的项目被声明为属性。 A将会是。这些选择也在FlowPanels中。但这仍然行不通。它是用JDK 8和Spring Boot编译和运行的。 –

+0

My * .ui.xml如下所示:

+0

如果我使用属性''select:Option text =”A“value =”A“/>'它也在工作。不应该是问题。 Java 1.7和1.8由我测试。 – mxlse