当属性无法唯一识别时如何使用 JSF Converter

发布于 2024-11-27 17:45:59 字数 325 浏览 3 评论 0原文

在我的 JSF 页面中,我有一个 ,必须通过从列表中选择一个对象来填充它。对象的id没有任何有用的意义,所以我必须编写一个Converter将其更改为可读的字符串。

不幸的是,对象的字符串表示形式无法唯一标识不同的对象,因此转换是不可逆的。现在我想知道如何解决这个问题?是否可以将所选对象的 id 存储到 中并将其传递给视图范围的支持 bean?

In my JSF page, I have a <rich:autocomplete/> which must be filled by selecting an object from the list. The id of the object does not have useful meaning, so I have to write a Converter to change it to readable string.

Unfortunately the string representation of the object could not uniquely identify different objects and so the conversion is not reversible. Now I want to know how I could solve this problem? Is it possible to store the id of the selected object into a <h:inputHidden> and pass it to the view scoped backing bean?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柠檬 2024-12-04 17:45:59

您使用输入组件和转换器的方式错误。显然,您正在使用对象的字符串表示形式(项目标签)作为输入值,而您应该使用对象的唯一标识符(项目值)作为输入值。转换器仅在自定义对象和唯一标识符之间进行转换,而不是在自定义对象和字符串表示形式之间进行转换。

You're using the input component and the converter the wrong way. You are apparently using the object's string representation (the item label) as input value, while you should be using the object's unique identifier (the item value) as input value. The converter is merely to convert between the custom object and the unique identifier, not between the custom object and the string representation.

厌倦 2024-12-04 17:45:59

我已经搜索过这个,直到目前 rich:component 没有提供直接的解决方案,因为它没有像 rich:select 这样的 itemValue

另外还有 2 个解决方案。

  1. 使用 JavaScript 将所选项目的 id 值添加到
    隐藏字段,然后使用该隐藏字段来识别
    所选项目

  2. 我使用 fetchValue 属性来连接 item_id - item_name
    然后我创建了一个转换器,它对 item_id 进行子串以识别
    所选项目。

I have searched this and until the moment there are no direct solution provided by the rich:component as it does not has itemValue like rich:select

Also there are 2 workaround solution.

  1. to use JavaScript to add the id value of the selected item to a
    hidden field and then use this hidden field to identify the
    selected item

  2. I used the fetchValue attribute to concat item_id - item_name
    then I created a converter which substring the item_id to identify
    the selected item.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文