Author: ivaynberg
Date: Sun Sep 23 11:58:40 2007
New Revision: 578593

URL: http://svn.apache.org/viewvc?rev=578593&view=rev
Log:
WICKET-962: Ajax updates do not work on Components with wicket id that is not 
\d+ when within AbstractRepeater/RepeatingView

Modified:
    
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java?rev=578593&r1=578592&r2=578593&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/repeater/AbstractRepeater.java
 Sun Sep 23 11:58:40 2007
@@ -17,6 +17,8 @@
 package org.apache.wicket.markup.repeater;
 
 import java.util.Iterator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.MarkupStream;
@@ -42,6 +44,8 @@
 
        private static final Logger log = 
LoggerFactory.getLogger(AbstractRepeater.class);
 
+       private static Pattern SAFE_CHILD_ID_PATTERN = 
Pattern.compile("^\\d+$");
+
        /**
         * Constructor
         * 
@@ -120,6 +124,24 @@
        protected void onBeforeRender()
        {
                onPopulate();
+
+               // TODO possibly enable this only in development mode
+               Iterator i = iterator();
+               while (i.hasNext())
+               {
+                       Component c = (Component)i.next();
+                       Matcher matcher = 
SAFE_CHILD_ID_PATTERN.matcher(c.getId());
+                       if (!matcher.matches())
+                       {
+                               log.warn("Child component of repeater " + 
getClass().getName() + ":" + getId() +
+                                               " has a non-safe child id of " 
+ c.getId() +
+                                               ". Safe child ids must be 
composed of digits only.");
+                               // do not flood the log
+                               break;
+                       }
+
+               }
+
                super.onBeforeRender();
        }
 


Reply via email to