Fix issue w/ use of UrlPathHelper's urlDecode property
Before this change the getPathWithinServletMapping method of UrlPathHelper could not work properly when a default servlet mapping (i.e. "/") was used in combination with urlDecode=false. The fact that the getServletPath() method of HttpServletRequest always returns a decoded path was getting in the way. Although there is no way to check Servlet mappings through the Servlet API, this change aims to detect the given scenario and returns the full path following the context path thus avoiding URL decoding. Note that the same can be achieved by setting urlDecode=false and alwaysUseFullPath=true. However this change ensures that urlDecode works properly without having to know that. Issue: SPR-11101
This commit is contained in:
@@ -77,6 +77,20 @@ public class UrlPathHelperTests {
|
||||
assertEquals("Incorrect path returned", "/welcome.html", helper.getPathWithinServletMapping(request));
|
||||
}
|
||||
|
||||
// SPR-11101
|
||||
|
||||
@Test
|
||||
public void getPathWithinServletWithoutUrlDecoding() {
|
||||
request.setContextPath("/SPR-11101");
|
||||
request.setServletPath("/test_url_decoding/a/b");
|
||||
request.setRequestURI("/test_url_decoding/a%2Fb");
|
||||
|
||||
helper.setUrlDecode(false);
|
||||
String actual = helper.getPathWithinServletMapping(request);
|
||||
|
||||
assertEquals("/test_url_decoding/a%2Fb", actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRequestUri() {
|
||||
request.setRequestURI("/welcome.html");
|
||||
|
||||
Reference in New Issue
Block a user