You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Marcus (JIRA)" <ji...@apache.org> on 2017/03/17 16:09:41 UTC

[jira] [Created] (WICKET-6340) The Ajax reponse of an AjaxSubmitButton creates invalid XHTML markup for multipart forms

Marcus created WICKET-6340:
------------------------------

             Summary: The Ajax reponse of an AjaxSubmitButton creates invalid XHTML markup for multipart forms
                 Key: WICKET-6340
                 URL: https://issues.apache.org/jira/browse/WICKET-6340
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 6.26.0, 7.6.0
         Environment: Jetty 9, Fedora 25
            Reporter: Marcus
            Priority: Minor
         Attachments: wicket-ajax-jquery-iframe.zip, wicket-ajax-jquery.patch

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.

{quote}
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:
{quote}

I found out that Wicket’s Ajax code is responsible for those problems.

{code:title=wicket-ajax-jquery.js, row 70|borderStyle=solid}
createIFrame = function (iframeName) {
  var $iframe = jQuery('<iframe name="'+iframeName+'" id="'+iframeName+
    '" src="about:blank" style="position: absolute; top: -9999px; left: -9999px;">');
  return $iframe[0];
};
{code}

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:

{code}
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
{code}

Open your browser’s console and upload any file on localhost:8080.

A patch which fixes this issued is attached. Thanks for your help.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)