[ https://issues.apache.org/jira/browse/WICKET-555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12553357 ]
Mikko Peltonen commented on WICKET-555: --------------------------------------- It looks as there's still a problem in trunk (and 1.3.0-rc2) in this regexp. Can't confirm if it's something to do with JDK version (I'm using 1.5.0_13), but I needed to change this: "(?s).*<component id=\"" + markupId + "\" ?>.*" to this (grouping in the end): "(?s).*<component id=\"" + markupId + "\" (?>.*)" for it to match my ajax response (or alternatively to "(?s).*<component id=\"" + markupId + "\" .*"). > WicketTester.assertComponentOnAjaxResponse fails if AJAX response contains > line breaks > -------------------------------------------------------------------------------------- > > Key: WICKET-555 > URL: https://issues.apache.org/jira/browse/WICKET-555 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 1.2.6, 1.2.7, 1.3.0-beta1 > Reporter: Jordi Salvat i Alabart > Assignee: Alastair Maw > Fix For: 1.3.0-beta3 > > > (Note: I've found this on 1.2.6 -- I'm reporting as existing on later > versions based on reading the code.) > When any of the components replaced by an AJAX response renders multiple HTML > lines, or if the AJAX response contains line breaks for any other reasons, > the WicketTester.assertComponentOnAjaxResponse always returns false. > I've traced this to this statement: > boolean isComponentInAjaxResponse = > ajaxResponse.matches(".*<component id=\"" + markupId > + "\" ?>.*"); > which never matches if ajaxResponse contains a \n because, in Java RegExps, > the dot doesn't match these unless DOTALL is set (and it is not by default). > In the latest version I've found in SVN (sorry I'm not yet quite familiar > with the codebase,) this code has been moved unchanged to > org.apache.wicket.util.tester.BaseWicketTester.java -- so I assume the bug is > still there. > The easiest solution is to add a single-line "(?s)" flag in front of the > regular expression: > boolean isComponentInAjaxResponse = > ajaxResponse.matches("(?s).*<component id=\"" + markupId > + "\" ?>.*"); -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.