Author: almaw Date: Tue May 22 06:35:15 2007 New Revision: 540579 URL: http://svn.apache.org/viewvc?view=rev&rev=540579 Log: WICKET-567 - relative paths generated incorrectly for HeaderContributor for mounted page
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?view=diff&rev=540579&r1=540578&r2=540579 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Tue May 22 06:35:15 2007 @@ -148,21 +148,35 @@ { return relativePathPrefixToContextRoot; } + + // Prepend to get back to the wicket handler. String tmp = getRelativePathPrefixToWicketHandler(); - String servletPath = getServletPath(); - if (servletPath == null || servletPath.length() == 0) + PrependingStringBuffer prepender = new PrependingStringBuffer(tmp); + + String path = getPath(); + if (path == null || path.length() == 0) { - return tmp; + path = ""; } - - PrependingStringBuffer prepender = new PrependingStringBuffer(tmp); - for (int i = 1; i < servletPath.length(); i++) + + // Now prepend to get back from the wicket handler to the root context. + + // Find the absolute path for the wicket filter/servlet + String wicketPath = ""; + + // We're running as a filter. + String servletPath = getServletPath(); + if (servletPath.endsWith(path)) { + wicketPath = servletPath.substring(0, servletPath.length() - path.length() - 1); + } + // We're running as a servlet + else { + wicketPath = servletPath; + } + + for (int i = 0; i < wicketPath.length(); i++) { - if (servletPath.charAt(i) == '?') - { - break; - } - if (servletPath.charAt(i) == '/') + if (wicketPath.charAt(i) == '/') { prepender.prepend("../"); }