You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Martin Marinschek (JIRA)" <my...@incubator.apache.org> on 2005/09/01 08:42:09 UTC
[jira] Commented: (MYFACES-425) findUISelectManyConverter should look for converter when valueType is List
[ http://issues.apache.org/jira/browse/MYFACES-425?page=comments#action_12320760 ]
Martin Marinschek commented on MYFACES-425:
-------------------------------------------
Well, if there is nothing in the contrary mentioned in the spec, we are safe to go!
regards,
Martin
> findUISelectManyConverter should look for converter when valueType is List
> --------------------------------------------------------------------------
>
> Key: MYFACES-425
> URL: http://issues.apache.org/jira/browse/MYFACES-425
> Project: MyFaces
> Type: Bug
> Versions: Nightly Build
> Reporter: Ken Weiner
> Assignee: Martin Marinschek
> Attachments: RendererUtils.patch.txt
>
> Currently the RendererUtils.findUISelectManyConverter() method assumes that, when the valueType is a List, the List must contain Strings, and therefore no Converter is needed. If the valueType is an array, then this method attempts to see if there is a Converter for the arrayComponentType (the type of objects that the array holds). A comment says that the API Doc of UISelectMany assumes that the List holds Strings, but we have an opportunity here to improve on that.
> The patch I'm submitting allows the binding of a UISelectMany component to a List of objects other than Strings. The behavior ends up being the same as if we were binding to an array of some component whose type is not a String (finding a Converter in this case is already handled by the RendererUtils.findUISelectManyConverter() method.
> The code that I propose adding is listed here and a patch file will be attached:
> if (List.class.isAssignableFrom(valueType))
> {
> //According to API Doc of UISelectMany the assumed entry type for a List is String
> //--> no converter needed
>
> // However, if the List contains something other than Strings, we can attempt
> // to find a suitable converter. In JDK 1.4, we can try to find out what the List
> // contains by looking at the SelectItem value of the first item. With generics in
> // JDK 1.5, it would be much easier to determine the type.
> List selectItems = RendererUtils.internalGetSelectItemList(component);
> if (selectItems != null && selectItems.size() > 0) {
> SelectItem selectItem = (SelectItem) selectItems.get(0);
> Class listComponentType = selectItem.getValue().getClass();
> if (!(String.class.equals(listComponentType))) {
> try
> {
> return facesContext.getApplication().createConverter(listComponentType);
> }
> catch (FacesException e)
> {
> log.error("No Converter for type " + listComponentType.getName() + " found", e);
> return null;
> }
> }
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira