как использовать конвертер JSF, если свойство не является однозначно идентифицируемым

На моей странице JSF у меня есть <rich:autocomplete/>, который нужно заполнить, выбрав объект из списка. id объекта не имеет полезного значения, поэтому мне нужно написать Converter, чтобы изменить его на читаемую строку.

К сожалению, строковое представление объекта не может однозначно идентифицировать разные объекты, поэтому преобразование необратимо. Теперь я хочу знать, как я могу решить эту проблему? Можно ли сохранить id выбранного объекта в <h:inputHidden> и передать его в компонент поддержки с областью видимости?


person arash    schedule 04.08.2011    source источник


Ответы (2)


Вы неправильно используете входной компонент и преобразователь. Очевидно, вы используете строковое представление объекта (метку элемента) в качестве входного значения, в то время как вы должны использовать уникальный идентификатор объекта (значение элемента) в качестве входного значения. Преобразователь предназначен только для преобразования пользовательского объекта в уникальный идентификатор, а не между пользовательским объектом и строковым представлением.

person BalusC    schedule 04.08.2011
comment
спасибо за ваш ответ, но я не понимаю, как я уже сказал, я использую компонент ‹rich:autocomplete/› (версия 4), который не поддерживает itemValue и itemLabel, например ‹h:selectOneMenu/›. с другой стороны, я должен показать пользователю неуникальное свойство, так как я могу достичь этой цели?! - person arash; 04.08.2011

Я искал это, и до сих пор нет прямого решения, предоставляемого богатым: компонентом, поскольку он не имеет itemValue, такого как богатый: выбор

Также есть 2 обходных решения.

  1. использовать JavaScript для добавления значения идентификатора выбранного элемента в скрытое поле, а затем использовать это скрытое поле для идентификации выбранного элемента

  2. Я использовал атрибут fetchValue для сопоставления item_id - item_name
    , затем я создал преобразователь, который подстроит item_id для идентификации выбранного элемента.

person Samy Omar    schedule 22.03.2012