как да използвате 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

Търсих това и до момента няма директно решение, предоставено от rich:component, тъй като той няма itemValue като rich:select

Също така има 2 заобиколни решения.

  1. да използвате JavaScript, за да добавите стойността на id на избрания елемент към скрито поле и след това да използвате това скрито поле, за да идентифицирате избрания елемент

  2. Използвах атрибута fetchValue, за да свържа item_id - item_name
    , след което създадох конвертор, който поднизва item_id, за да идентифицира избрания елемент.

person Samy Omar    schedule 22.03.2012