cs701 created WICKET-6338:
-----------------------------

             Summary: regression in original destination Url rendering using 
RestartResponseAtInterceptPageException
                 Key: WICKET-6338
                 URL: https://issues.apache.org/jira/browse/WICKET-6338
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 7.4.0
         Environment: Windows 10 x64, Tomcat 8, Java 8
            Reporter: cs701


After moving a Wicket app from version 6 to 7.0.4 we ran into a regression 
concerning redirects via RestartResponseAtInterceptPageException.

When you throw new RestartResponseAtInterceptPageException(SomePage.class) the 
originalUrl saved in InterceptData contains protocol, host port
and a segment indicating the context-relative path of the original target page.

Once you call 
RestartResponseAtInterceptPageException.continueToOriginalDestination() the URL 
that is returned by renderUrl() is missing the context path
in Wicket 7, whereas it worked fine in 6.

Let's assume the original Url looked like this
        protocol: "http"
        host: "localhost"
        port: 8080
        segments: ["mypage"]
and the app is deployed in the context path /myapp

then Wicket 6 would have rendered this:

http://localhost:8080/myapp/mypage

whereas Wicket 7 does this:

http://localhost:8080/mypage

The reason being this difference in UrlRenderer.renderFullUrl():

        // Wicket 6
        if (url.isAbsolute() == false)
        {
                render.append(request.getContextPath());
                render.append(request.getFilterPath());
        }
        
        vs.
        
        // Wicket 7
    if ((!url.isFull()) && (!url.isContextAbsolute()))
    {
      render.append(this.request.getContextPath());
      render.append(this.request.getFilterPath());
    }
        
The "if" condition for the example Url above is true for the Wicket 6 version, 
but false for the Wicket 7 version.




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

Reply via email to