为什么 UISelectMany 不将 selectItems 转换为对象列表?

发布于 2024-10-24 09:51:17 字数 610 浏览 1 评论 0原文

刚刚在 Java EE 文档 中找到了以下内容对于javax.faces.component.UISelectMany:

使用以下算法获取转换器:如果组件 有一个附带的转换器,请使用它。如果 不,寻找 ValueExpression 值(如果有)。价值表达 必须指向以下内容:

  • 基元数组(例如 int[])。查询已注册
    该原语的按类转换器 类型。
  • 对象数组(例如 Integer[] 或 String[])。查找
    注册的按类转换器 底层元素类型。
  • java.util.Collection。不要转换值。

为了更好地理解,我想知道为什么如果 ValueExpression 是集合,则值不会被转换。

如果我想将转换器附加到 UISelectMany,我是否需要为 Collection 或底层元素类型编写转换器?

Just found the following in the Java EE Documentation for javax.faces.component.UISelectMany:

Obtain the Converter using the following algorithm: If the component
has an attached Converter, use it. If
not, look for a ValueExpression for
value (if any). The ValueExpression
must point to something that is:

  • An array of primitives (such as int[]). Look up the registered
    by-class Converter for this primitive
    type.
  • An array of objects (such as Integer[] or String[]). Look up the
    registered by-class Converter for the
    underlying element type.
  • A java.util.Collection. Do not convert the values.

For a better understanding, I would like to know why the values won't be converted if the ValueExpression is a Collection.

If I want to attach a converter to UISelectMany, do I need to write a converter for the Collection or for the underlying element type?

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

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

发布评论

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

评论(1

心奴独伤 2024-10-31 09:51:17

因为 EL 不知道/不能知道通用列表类型,因为它在运行时丢失了。它只知道它是某物的集合。默认情况下,这些项目将被视为String。您需要为通用列表类型而不是集合编写转换器。另请参阅此相关答案

要了解有关 Java 泛型类型擦除的更多信息,请查看 泛型教程

Because EL don't/can't know about the generic list type, because it got lost during runtime. All it knows is that it's a collection of something. The items will be treated as String by default. You need to write a converter for the generic list type, not for the collection. See also this related answer.

To learn more about the type erasure of Java generics, check the generics tutorial.

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