[ https://issues.apache.org/jira/browse/WICKET-847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12628320#action_12628320 ]
erikvanoosten edited comment on WICKET-847 at 9/4/08 5:03 AM: ---------------------------------------------------------------- I got bitten by this as well (with 1.4-m3). The failing combination is: Tomcat and IE (6 or 7). Firefox correctly interprets the "./" as "" so its okay to use Firefox + Tomcat. Jetty converts "./" to "", so its okay to use any borwser on Jetty. My workaround was to patch these two Wicket core files (I can confirm it works when redirecting to the home page): BookmarkablePageRequestTarget: -----------8<-------------------------- public void respond(RequestCycle requestCycle) { if (pageClassRef != null && pageClassRef.get() != null) { if (requestCycle.isRedirect()) { IRequestCycleProcessor processor = requestCycle.getProcessor(); String redirectUrl = processor.getRequestCodingStrategy() .encode(requestCycle, this) .toString(); // START OF PATCH if (redirectUrl.startsWith("./")) { redirectUrl = redirectUrl.substring(2); } // END OF PATCH requestCycle.getResponse().redirect(redirectUrl); } else { // Let the page render itself getPage(requestCycle).renderPage(); } } } -----------8<-------------------------- RedirectRequestTarget: -----------8<-------------------------- public void respond(RequestCycle requestCycle) { Response response = requestCycle.getResponse(); response.reset(); if (redirectUrl.startsWith("/")) { RequestContext rc = RequestContext.get(); if (rc.isPortletRequest() && ((PortletRequestContext)rc).isEmbedded()) { response.redirect(redirectUrl); } else { String location = RequestCycle.get() .getRequest() .getRelativePathPrefixToContextRoot() + this.redirectUrl.substring(1); // START OF PATCH if (location.startsWith("./")) { location = location.substring(2); } // END OF PATCH response.redirect(location); } } else if (redirectUrl.startsWith("http://") || redirectUrl.startsWith("https://")) { response.redirect(redirectUrl); } else { response.redirect(RequestCycle.get() .getRequest() .getRelativePathPrefixToWicketHandler() + redirectUrl); } } -----------8<-------------------------- was (Author: erikvanoosten): I got bitten by this as well (with 1.4-m3). The failing combination is: Tomcat and IE (6 or 7). Firefox correctly interprets the "./" as "" so its okay to use Firefox + Tomcat. Jetty converts "./" to "", so its okay to use any borwser on Jetty. My workaround was to patch these two Wicket core files (I can confirm it works): BookmarkablePageRequestTarget: -----------8<-------------------------- public void respond(RequestCycle requestCycle) { if (pageClassRef != null && pageClassRef.get() != null) { if (requestCycle.isRedirect()) { IRequestCycleProcessor processor = requestCycle.getProcessor(); String redirectUrl = processor.getRequestCodingStrategy() .encode(requestCycle, this) .toString(); // START OF PATCH if (redirectUrl.startsWith("./")) { redirectUrl = redirectUrl.substring(2); } // END OF PATCH requestCycle.getResponse().redirect(redirectUrl); } else { // Let the page render itself getPage(requestCycle).renderPage(); } } } -----------8<-------------------------- RedirectRequestTarget: -----------8<-------------------------- public void respond(RequestCycle requestCycle) { Response response = requestCycle.getResponse(); response.reset(); if (redirectUrl.startsWith("/")) { RequestContext rc = RequestContext.get(); if (rc.isPortletRequest() && ((PortletRequestContext)rc).isEmbedded()) { response.redirect(redirectUrl); } else { String location = RequestCycle.get() .getRequest() .getRelativePathPrefixToContextRoot() + this.redirectUrl.substring(1); // START OF PATCH if (location.startsWith("./")) { location = location.substring(2); } // END OF PATCH response.redirect(location); } } else if (redirectUrl.startsWith("http://") || redirectUrl.startsWith("https://")) { response.redirect(redirectUrl); } else { response.redirect(RequestCycle.get() .getRequest() .getRelativePathPrefixToWicketHandler() + redirectUrl); } } -----------8<-------------------------- > setResponsePage redirects to wrong url > -------------------------------------- > > Key: WICKET-847 > URL: https://issues.apache.org/jira/browse/WICKET-847 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 1.3.0-beta2 > Reporter: Andrew Klochkov > Assignee: Alastair Maw > Fix For: 1.3.5 > > Attachments: wicket-quickstart.tar.gz > > > When I do setResponsePage(MyHomePage.class) IE tries to show me > "my.site.com/./" url and gets 404 response. > Firefox just shows "my.site.com" without any troubles. I'm using wicket > 1.3-beta2 and WicketFilter mapped to /*. > It's being reproduced under tomcat only, jetty works fine. My tomcat version > is 5.5.17. > Quickstart project which reproduces the bug is attached. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.