Uploaded image for project: 'Cocoon'
  1. Cocoon
  2. COCOON-1943

[Patch] Parameters in blocks-protocol URIs get decoded too early

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Reopened
    • Major
    • Resolution: Unresolved
    • 2.2
    • None
    • None
    • Patch available

    Description

      When you pass parameters in the query part of a block-protocol URI, eg. "block:super:/dosomething?param1=alpha&param2=beta", and they include some encoded stuff, eg. "<br/>" encoded as "%3Cbr/%3E", this will get decoded before the actual servlet request happens. This takes place in BlockConnection.parseBlockURI() when uri.getSchemeSpecificPart() is called, which will decode the string. Instead, one should call uri.getRawSchemeSpecificPart(), which is exactly what the patch does.

      (A little bit Off-topic): The general point here is that I am calling a form that is handled in the super block. Since you cannot pass on request parameters from a POST call (that comes from the browser) to the other (super) block called via the blocks-protocol (because the only interface you have is the Source, where you can only pass information via the URI), you have to put all parameters in the uri. I have written a simple input module that creates a "param1=alpha&param2=beta" string from another input module (preferrably request-param) so that you simply call: "block:super:/dosomething?{params-to-uri:request-param}". This might be integrated into Cocoon as a standard InputModule.

      Attachments

        1. servlet-connection-uri-encoding.patch
          3 kB
          Alexander Klimetschek
        2. cocoon-blocks-fw-raw-encoded-URIs.patch
          1.0 kB
          Alexander Klimetschek

        Activity

          People

            Unassigned Unassigned
            alexander.klimetschek Alexander Klimetschek
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: