Как UISelectOne и UISelectMany компоненты предварительно выбирают значения по умолчанию в f: selectItems

Я знаю, как предварительно

, в выбранном value должен быть один из объектов из , но как этот компонент работает под капотом и могу ли я изменить это поведение?

В моем случае у меня есть дублирующийся объект, на самом деле это два объекта с одинаковыми значениями, но созданные дважды, а выбранный объект в

отличается от объекта от и он не распознает его. Скорее всего, я изменю свой дизайн, поэтому он будет указывать на один и тот же объект, но если я не смогу это сделать из-за устаревшего кода или т. Д., Как я могу изменить поведение

что он будет сравнивать объекты по id например?

Я думал, что этот converter отвечает за него, но когда он визуализируется, он не getAsObject метод getAsString только getAsString , поэтому я предполагаю, что есть что-то другое, но что?

спасибо

Для этого используется Object#equals() . Вы можете изменить (исправить) это поведение, выполнив его соответствующим образом на своем объекте.

 private Long id; @Override public boolean equals(Object other) { return (other != null && getClass() == other.getClass() && id != null) ? id.equals(getClass().cast(other).id) : (other == this); } 

Не забывайте hashCode() чтобы удовлетворить контракт equals-hashCode .

 @Override public int hashCode() { return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode(); } 

Если вы не можете изменить существующий объект по какой-то непонятной причине, оберните его в свой собственный DTO.

Конвертер преобразует только объект и его уникальное представление String для использования в результатах вывода HTML и HTTP-запроса и поэтому не влияет на предварительный выбор. Он влияет только на потенциальную ошибку проверки: значение не является допустимой проблемой.

Смотрите также:

  • Как заполнить параметры h: selectOneMenu из базы данных?
Interesting Posts

Как вернуть частичный ответ JSON с помощью Java?

Как выполнить итерацию дочерних элементов div с помощью jQuery?

Максимально на значениях заголовка HTTP?

Изменение точки останова на панели навигации при загрузке без использования МЕНЬШЕ

Как слить скаляр в вектор без компилятора, теряющего инструкцию обнуления верхних элементов? Ограничение дизайна в встроенных средах Intel?

Создание диаграммы ГАНТ (временная шкала) от времени начала и продолжительности

Eclipse Google Plug-In не запускает сервер для веб-приложения

Поддерживается ли constexpr с lambda-функциями / выражениями?

Почему диапазон работает так, как ожидалось?

Жесткий диск вызывает щелчок после воздействия на воду

Внутренний class и локальные переменные

У меня есть (возможно) посторонние разделы, могу ли я их удалить?

Автоматически монтировать внешние диски в / media / LABEL при загрузке без входа пользователя в систему?

Функция правого числа в R

Программно заблокировать и разблокировать экран iPhone

Давайте будем гением компьютера.