JSP FormTag calculates proper default form action even when using a rewrite filter on WebSphere (SPR-7067)

This commit is contained in:
Juergen Hoeller 2010-04-12 14:59:27 +00:00
parent 03120b70d0
commit 385298b808
1 changed files with 13 additions and 6 deletions

View File

@ -40,6 +40,14 @@ import org.springframework.util.StringUtils;
*/
public class UrlPathHelper {
/**
* Special WebSphere request attribute, indicating the original request URI.
* Preferable over the standard Servlet 2.4 forward attribute on WebSphere,
* simply because we need the very first URI in the request forwarding chain.
*/
private static final String WEBSPHERE_URI_ATTRIBUTE = "com.ibm.websphere.servlet.uri_non_decoded";
private final Log logger = LogFactory.getLog(getClass());
private boolean alwaysUseFullPath = false;
@ -236,14 +244,15 @@ public class UrlPathHelper {
/**
* Return the request URI for the given request. If this is a forwarded request,
* correctly resolves to the request URI of the original request.
* <p>Relies on the Servlet 2.4 'forward' attributes. These attributes may be set by
* other components when running in a Servlet 2.3 environment.
*/
public String getOriginatingRequestUri(HttpServletRequest request) {
String uri = (String) request.getAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE);
String uri = (String) request.getAttribute(WEBSPHERE_URI_ATTRIBUTE);
if (uri == null) {
uri = (String) request.getAttribute(WebUtils.FORWARD_REQUEST_URI_ATTRIBUTE);
if (uri == null) {
uri = request.getRequestURI();
}
}
return decodeAndCleanUriString(request, uri);
}
@ -252,8 +261,6 @@ public class UrlPathHelper {
* URL if called within a RequestDispatcher include.
* <p>As the value returned by <code>request.getContextPath()</code> is <i>not</i>
* decoded by the servlet container, this method will decode it.
* <p>Relies on the Servlet 2.4 'forward' attributes. These attributes may be set by
* other components when running in a Servlet 2.3 environment.
* @param request current HTTP request
* @return the context path
*/