Значение настройки для выбранного элемента не отображается в пользовательском интерфейсе

Я использую vaadin select для отображения меню выбора с состояниями.

private Select<States> states = new Select<>();
states.setLabel("State");
states.setItems(facade.stateService().findAllStates());
states.setItemLabelGenerator(States::getName);
Optional<States> state = facade.stateService().findByCode(location.getLocationState());
if (state.isPresent()) {
    states.setValue(state.get());    // this is not working
}

Я получаю значение состояния и устанавливаю его с помощью states.setValue(), но выбор не отображает обновленное состояние. Метод вызывается. Как сделать, чтобы меню было выбрано? Спасибо.

Реализуют ли государства equals/hashCode?

Simon Martinelli 10.02.2023 08:18

Нет, но после реализации это работает.

johndoe 10.02.2023 09:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Невозможно сказать, основываясь на коде, которым вы поделились. Вполне вероятно, что объект States, возвращаемый location.getLocationState().get(), не имеет того же идентификатора объекта, что и значение, возвращаемое facade.stateService().findAllStates(). Это может произойти, даже если свойства (например, «имя») объектов совпадают. Обычно ответ заключается в реализации методов hashCode и equals в классе таким образом, чтобы идентичность зависела только от идентификатора объекта.

Другие вопросы по теме