You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2005/08/29 06:11:44 UTC
svn commit: r264055 -
/myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/RendererUtils.java
Author: mmarinschek
Date: Sun Aug 28 21:11:39 2005
New Revision: 264055
URL: http://svn.apache.org/viewcvs?rev=264055&view=rev
Log:
Fix for MYFACES-425. Thanks to Ken Weiner for supplying this patch.
Modified:
myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/RendererUtils.java
Modified: myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/RendererUtils.java
URL: http://svn.apache.org/viewcvs/myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/RendererUtils.java?rev=264055&r1=264054&r2=264055&view=diff
==============================================================================
--- myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/RendererUtils.java (original)
+++ myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/RendererUtils.java Sun Aug 28 21:11:39 2005
@@ -344,7 +344,34 @@
if (List.class.isAssignableFrom(valueType))
{
//According to API Doc of UISelectMany the assumed entry type for a List is String
- //--> no converter needed
+ //--> so basically 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;
+ }
+ }
+ }
+
return null;
}