You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2008/02/15 01:30:01 UTC

svn commit: r627919 - in /myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit: RendererUtils.java _SharedRendererUtils.java

Author: lu4242
Date: Thu Feb 14 16:30:00 2008
New Revision: 627919

URL: http://svn.apache.org/viewvc?rev=627919&view=rev
Log:
fix MYFACES-1819 h:selectManyCheckbox with value="#{bean.map['somekey']}" fails

Modified:
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java?rev=627919&r1=627918&r2=627919&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java Thu Feb 14 16:30:00 2008
@@ -408,9 +408,16 @@
         ValueExpression vb = component.getValueExpression("value");
         if (vb == null) return null;
 
-        Class valueType = vb.getType(facesContext.getELContext());
+        //By some strange reason vb.getType(facesContext.getELContext());
+        //does not return the same as vb.getValue(facesContext.getELContext()).getClass(),
+        //so we need to use this instead.
+        Class valueType = null;
+        Object value = vb.getValue(facesContext.getELContext()); 
+        valueType = (value != null) ? value.getClass() :
+            vb.getType(facesContext.getELContext()) ;
+        
         if (valueType == null) return null;
-
+        
         if (List.class.isAssignableFrom(valueType))
         {
             //According to API Doc of UISelectMany the assumed entry type for a List is String

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java?rev=627919&r1=627918&r2=627919&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java Thu Feb 14 16:30:00 2008
@@ -87,7 +87,13 @@
         Class arrayComponentType = null;
         if (expression != null)
         {
-            valueType = expression.getType(facesContext.getELContext());
+            //By some strange reason vb.getType(facesContext.getELContext());
+            //does not return the same as vb.getValue(facesContext.getELContext()).getClass(),
+            //so we need to use this instead.
+            Object value = expression.getValue(facesContext.getELContext()); 
+            valueType = (value != null) ? value.getClass() :
+                expression.getType(facesContext.getELContext()) ;
+            
             if (valueType != null && valueType.isArray())
             {
                 arrayComponentType = valueType.getComponentType();