Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-3420

javascript with a less than character ("<") fails to execute when added through a header contribution in ajax response

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 1.4.15
    • 1.5-RC3
    • wicket
    • Validated this bug on my dev environment: Windows 7 64 bit using Firefox 4.0beta10 and Chrome 8.

    Description

      This is adapted from a wicket users post I made (links are to the same thread in two archive systems):

      http://markmail.org/search/?q=wicket%20users%20wicket-ajax.js#query:wicket%20users%20wicket-ajax.js+page:1+mid:rfts3ar3upffhbbt+state:results

      http://mail-archives.apache.org/mod_mbox/wicket-users/201102.mbox/%3CAANLkTi=EkmTA0RnA+GyJE-CQWmkCxRLsjp+z8jwv-Aw9@mail.gmail.com%3E

      The problem: I have a panel with this:

      <wicket:head>
      <script>
      if (someVariable < 0)

      { someVariable = 0; }

      </script>
      </wicket:head>

      This script fails to execute when the panel is loaded by ajax. If I replace the less than character "<" with equals "==", then it executes (but of course, this is not what I need).

      I tested this in Firefox 4.0b10 and Chrome 8.

      After some debugging, it seems to me that this needs to be corrected in wicket-ajax.js. The header contribution is sent to the browser inside of a CDATA section so the "<" character arrives to javascript intact. However, in parsing the script tag, the "<" seems to signal the beginning of an HTML tag that then is considered malformed.

      Possible workarounds for apps:

      • Invert the logic so a greater-than is used. In my example, this would be: "if (0 > someVariable) {"
      • Put the code into a separate JS file (the downside is it requires another network hop from the browser)
      • Embed the script in <wicket:panel> rather than <wicket:head> (the disadvantage is the script will be re-sent with the panel content when the panel is re-used on the same page)

      Attachments

        1. myproject.rar
          7 kB
          Igor Vaynberg
        2. WICKET-3420.patch
          7 kB
          Martin Tzvetanov Grigorov

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            mgrigorov Martin Tzvetanov Grigorov
            randypower Randy Schnedler
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment