2016-08-05 3 views
0

Я работаю с GwtBootstrap3 0.9.3 и размещал некоторые виджеты на своем с использованием UiBinder. Флажки класса org.gwtbootstrap3.client.ui.CheckBox и кнопки org.gwtbootstrap3.client.ui.Button работают правильно. Они стреляют ClickEvents, когда я нажимаю на них.Select и MultipleSelect не запускают события

Но выбор классов org.gwtbootstrap3.extras.select.client.ui.MultipleSelect и org.gwtbootstrap3.extras.select.client.ui.Select не запускать никаких событий, когда я нажимаю на них. Не должны ли они запускать com.google.gwt.event.logical.shared.ValueChangeEvent при создании или изменении выделения?

В eventhandlers ищут так:

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

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

The ValueChangeEvent никогда не уволят, когда я нажимаю на этих widges.

Но когда я устанавливаю значения программно как

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

ValueChangeEvent уволят и do.somethinSimple() будет вызван.

Что пошло не так? Что я могу сделать, чтобы эти виджеты выбора запускали 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

Если я использую атрибуты' ', он также работает. Не должно быть проблемы. Java 1.7 и 1.8 тестируются мной. – mxlse

Смежные вопросы