Vaadin 7 -> com.vaadin.ui.CheckBox -> ".getValue ()" всегда возвращает "false" - PullRequest
1 голос
/ 08 октября 2019

Я использую Vaadin7 com.vaadin.ui.CheckBox с Java 1.8 на сервере приложений Wildfly.

У меня есть PopUpDialog со следующей конфигурацией флажка:

checkBox1.addValueChangeListener(event -> // Java 8
                LOGGER.info("property Value: "+ event.getProperty().getValue().toString()+
                        " getValue Value: "+checkBox1.getValue()));

Когда я нажимаю checkBox1 в пользовательском интерфейсе в веб-браузере вызывается ValueChangeListener.

Первый property Value "event.getProperty().getValue().toString()" возвращает правильное true/false состояние флажка.

Но checkBox1.getValue(), который яЯ хочу использовать в своем классе методы PopUpDialog для доступа к состоянию true/false == clicked/not clicked чекбокса всегда возвращает false, даже если я вызываю его в ValueChangeListener

Может кто-нибудь помочь мне, почему "getValue ()"метод не возвращает правильное состояние?

----------------- РЕДАКТИРОВАТЬ ---------------

Одним из решений является использование ValueChangeListener для установки значения флажка:

checkBox1.addValueChangeListener(event ->
                checkBox1.setValue(
(Boolean) event.getProperty().getValue()
                                   ));

Но обычно значение следует устанавливать без установки его слушателем вручную, правильно?

1 Ответ

0 голосов
/ 09 октября 2019

что такое PopUpDialog класс? Это какое-то дополнение? (Я не нашел себя, ненадолго погуглив)

Я попробовал ваш сценарий с PopupView, и значение всегда возвращается правильно. Версия Vaadin - 7.7.13

CheckBox cb=new CheckBox();
cb.addValueChangeListener(e->{
            System.out.println("Event value" + e.getProperty().getValue());
            System.out.println("cb value: " + cb.getValue());
});
VerticalLayout popupContent = new VerticalLayout();
Button getValue=new Button("Value", e->{
            Notification.show("CB value:" + cb.getValue());
});
popupContent.addComponents(cb,getValue);
PopupView popup = new PopupView("Pop it up", popupContent);
layout.addComponent(popup);
setContent(layout);

Есть ли что-то, что я пропустил в моем примере?

Редактировать: И флажок, конечно, должен возвращать правильное значение. В противном случае это ошибка

...