You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ba...@apache.org on 2005/12/03 02:09:10 UTC

svn commit: r351865 - /myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/_SharedRendererUtils.java

Author: baranda
Date: Fri Dec  2 17:09:07 2005
New Revision: 351865

URL: http://svn.apache.org/viewcvs?rev=351865&view=rev
Log:
Fixes exception when using converters in UISelectMany components. Now it is possible to pass an array of values of any type to the selectMany value attribute. Fixes MYFACES-154,669 and 852

Modified:
    myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/_SharedRendererUtils.java

Modified: myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/_SharedRendererUtils.java
URL: http://svn.apache.org/viewcvs/myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/_SharedRendererUtils.java?rev=351865&r1=351864&r2=351865&view=diff
==============================================================================
--- myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/_SharedRendererUtils.java (original)
+++ myfaces/share/trunk/src/java/org/apache/myfaces/renderkit/_SharedRendererUtils.java Fri Dec  2 17:09:07 2005
@@ -83,14 +83,6 @@
         ValueBinding vb = component.getValueBinding("value");
         Class valueType = null;
         Class arrayComponentType = null;
-        if (vb != null)
-        {
-            valueType = vb.getType(facesContext);
-            if (valueType != null && valueType.isArray())
-            {
-                arrayComponentType = valueType.getComponentType();
-            }
-        }
 
         Converter converter = component.getConverter();
         if (converter == null)
@@ -136,6 +128,19 @@
         }
 
         // Now, we have a converter...
+        // We determine the type of the component array after converting one of it's elements
+        if (vb != null)
+        {
+            valueType = vb.getType(facesContext);
+            if (valueType != null && valueType.isArray())
+            {
+                if (submittedValue.length > 0) 
+                {
+                    arrayComponentType = converter.getAsObject(facesContext, component, submittedValue[0]).getClass();
+                }
+            }
+        }
+        
         if (valueType == null)
         {
             // ...but have no idea of expected type