Details
Description
My web pages are delivered as XHTML5 (response.setContentType("application/xhtml+xml");). When I add a multipart form and submit a file, I get strange JavaScript errors about invalid or illegal strings.
Wicket.Ajax: An error occurred while executing Ajax request:SyntaxError: An invalid or illegal string was specified
XML Parsing Error: mismatched tag. Expected: </iframe>.
Address:
Row Nr. 1, Column 202:
I found out that Wicket’s Ajax code is responsible for those problems.
createIFrame = function (iframeName) { var $iframe = jQuery('<iframe name="'+iframeName+'" id="'+iframeName+ '" src="about:blank" style="position: absolute; top: -9999px; left: -9999px;">'); return $iframe[0]; };
The iframe tag isn’t closed. This is fine for HTML5, but not for XHTML5.
I have attached a quite minimal Wicket project were the problems can be examined:
mkdir wicket-ajax-jquery-iframe
mv wicket-ajax-jquery-iframe.zip wicket-ajax-jquery-iframe
cd wicket-ajax-jquery-iframe
unzip wicket-ajax-jquery-iframe.zip
mvn package
mvn jetty:run-war
Open your browser’s console and upload any file on localhost:8080.
A patch which fixes this issued is attached. Thanks for your help.