Why does UISelectMany not convert selectItems to a list of objects?
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[])开发者_C百科. 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?
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.
加载中,请稍侯......
精彩评论