[EMAIL PROTECTED] wrote:
Author: prophecy
Date: Fri Nov 18 14:39:47 2005
New Revision: 345590

URL: http://svn.apache.org/viewcvs?rev=345590&view=rev
Log:
- Made t:message elements work with Ajax errors
- fixed UIComponent.findComponent to actually work.

Modified:
    myfaces/api/trunk/src/java/javax/faces/component/_ComponentUtils.java

Modified: myfaces/api/trunk/src/java/javax/faces/component/_ComponentUtils.java
URL: 
http://svn.apache.org/viewcvs/myfaces/api/trunk/src/java/javax/faces/component/_ComponentUtils.java?rev=345590&r1=345589&r2=345590&view=diff
==============================================================================
--- myfaces/api/trunk/src/java/javax/faces/component/_ComponentUtils.java 
(original)
+++ myfaces/api/trunk/src/java/javax/faces/component/_ComponentUtils.java Fri 
Nov 18 14:39:47 2005
@@ -72,6 +72,7 @@
static UIComponent findComponent(UIComponent findBase, String id)
     {
+        //System.out.println("findBase: " + findBase + " - " + 
findBase.getId());
         if (idsAreEqual(id,findBase))
         {
             return findBase;
@@ -80,15 +81,17 @@
         for (Iterator it = findBase.getFacetsAndChildren(); it.hasNext(); )
         {
             UIComponent childOrFacet = (UIComponent)it.next();
-            if (!(childOrFacet instanceof NamingContainer))
-            {
+            //System.out.println("childorfacet: " + childOrFacet + " - " + 
childOrFacet.getId());
+            // TR - this was not finding all components, removing this if 
statement worked
+            //if (!(childOrFacet instanceof NamingContainer))
+            //{
                 UIComponent find = findComponent(childOrFacet, id);
                 if (find != null) return find;
-            }
-            else if (idsAreEqual(id,childOrFacet))
+            //}
+            /*else if (idsAreEqual(id,childOrFacet))
             {
                 return childOrFacet;
-            }
+            }*/
         }
return null;



I suspect this change will have broken UIComponentBase.findComponent, which is a pretty important method. UIComponent.findComponent is depending on this method to *not* recurse into NamingContainer components, as it handles those itself.

In particular, I believe this structure is perfectly valid:

subview id="foo"      --> absolute id "foo"
   UIInput id="bar"   --> absolute id "foo:bar"
subview id="bar"      --> absolute id "bar"
   UIInput id="bar"   --> absolute id "bar:bar"

I'm also puzzled why this change was necessary, as I can't find any code that calls this _ComponentUtils.findComponent method except for UIComponentBase.findComponent.

Regards,

Simon

Reply via email to