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(); }