Я использую 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()
, но выбор не отображает обновленное состояние. Метод вызывается. Как сделать, чтобы меню было выбрано? Спасибо.
Нет, но после реализации это работает.
Невозможно сказать, основываясь на коде, которым вы поделились. Вполне вероятно, что объект States
, возвращаемый location.getLocationState().get()
, не имеет того же идентификатора объекта, что и значение, возвращаемое facade.stateService().findAllStates()
. Это может произойти, даже если свойства (например, «имя») объектов совпадают. Обычно ответ заключается в реализации методов hashCode
и equals
в классе таким образом, чтобы идентичность зависела только от идентификатора объекта.
Реализуют ли государства equals/hashCode?