在我的JSF页面中,我有一个<rich:autocomplete/>
,必须通过从列表中选择一个对象来填充它。对象的id
没有有用的意义,所以我必须写一个Converter
来把它变成可读的字符串。
不幸的是,对象的字符串表示形式不能唯一地标识不同的对象,因此转换是不可逆转的。现在我想知道如何解这个问题?是否有可能将所选对象的id
存储到<h:inputHidden>
中并将其传递给视图作用域的支持bean?
您以错误的方式使用输入组件和转换器。显然,您正在使用对象的字符串表示形式(项目标签)作为输入值,而您应该使用对象的唯一标识符(项目值)作为输入值。转换器只是在自定义对象和唯一标识符之间进行转换,而不是在自定义对象和字符串表示形式之间进行转换。
我已经搜索了这个,直到那一刻,没有直接的解决方案由rich:组件提供,因为它没有itemValue像rich:select
也有两个变通的解决方案。
-
使用JavaScript将选中项目的id值添加到a隐藏字段,然后使用这个隐藏字段来识别选择项目
-
我使用fetchValue属性来连接item_id - item_name
然后我创建了一个转换器,它的子字符串item_id要标识