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/08/04 22:22:25 UTC

svn commit: r682490 - /myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java

Author: lu4242
Date: Mon Aug  4 13:22:25 2008
New Revision: 682490

URL: http://svn.apache.org/viewvc?rev=682490&view=rev
Log:
MYFACES-1744 Validation messages is shown for SelectOneMenu in case first child is not SelectItems or SelectItem (skip nested components that does not inherit form UISelectItem or UISelectItems)

Modified:
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java?rev=682490&r1=682489&r2=682490&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java Mon Aug  4 13:22:25 2008
@@ -67,6 +67,28 @@
         if (_childs.hasNext())
         {
             UIComponent child = (UIComponent) _childs.next();
+            // When there is other components nested that does
+            // not extends from UISelectItem or UISelectItems
+            // the behavior for this iterator is just skip this
+            // element(s) until an element that extends from these
+            // classes are found. If there is no more elements
+            // that conform this condition, just return false.
+            while (!(child instanceof UISelectItem)
+                    && !(child instanceof UISelectItems))
+            {
+                //Try to skip it
+                if (_childs.hasNext())
+                {
+                    //Skip and do the same check
+                    child = (UIComponent) _childs.next();
+                }
+                else
+                {
+                    //End loop, so the final result is return false,
+                    //since there are no more components to iterate.
+                    return false;
+                }
+            }
             if (child instanceof UISelectItem)
             {
                 UISelectItem uiSelectItem = (UISelectItem) child;
@@ -154,11 +176,6 @@
                                         .getName()));
                 }
             }
-            else
-            {
-                //todo: may other objects than selectItems be nested or not?
-                //log.error("Invalid component : " + getPathToComponent(child) + " : must be UISelectItem or UISelectItems, is of type : "+((child==null)?"null":child.getClass().getName()));
-            }
         }
         return false;
     }