@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2012 the original author or authors .
* Copyright 2002 - 2017 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.util.Assert ;
import org.springframework.util.StringUtils ;
import org.springframework.web.util.WebUtils ;
/ * *
* { @link javax . servlet . Filter } that converts posted method parameters into HTTP methods ,
@ -44,6 +45,7 @@ import org.springframework.util.StringUtils;
@@ -44,6 +45,7 @@ import org.springframework.util.StringUtils;
* < i > before < / i > this HiddenHttpMethodFilter in your { @code web . xml } filter chain .
*
* @author Arjen Poutsma
* @author Juergen Hoeller
* @since 3 . 0
* /
public class HiddenHttpMethodFilter extends OncePerRequestFilter {
@ -67,15 +69,16 @@ public class HiddenHttpMethodFilter extends OncePerRequestFilter {
@@ -67,15 +69,16 @@ public class HiddenHttpMethodFilter extends OncePerRequestFilter {
protected void doFilterInternal ( HttpServletRequest request , HttpServletResponse response , FilterChain filterChain )
throws ServletException , IOException {
String paramValue = request . getParameter ( this . methodParam ) ;
if ( "POST" . equals ( request . getMethod ( ) ) & & StringUtils . hasLength ( paramValue ) ) {
String method = paramValue . toUpperCase ( Locale . ENGLISH ) ;
HttpServletRequest wrapper = new HttpMethodRequestWrapper ( request , method ) ;
filterChain . doFilter ( wrapper , response ) ;
}
else {
filterChain . doFilter ( request , response ) ;
HttpServletRequest requestToUse = request ;
if ( "POST" . equals ( request . getMethod ( ) ) & & request . getAttribute ( WebUtils . ERROR_EXCEPTION_ATTRIBUTE ) = = null ) {
String paramValue = request . getParameter ( this . methodParam ) ;
if ( StringUtils . hasLength ( paramValue ) ) {
requestToUse = new HttpMethodRequestWrapper ( request , paramValue ) ;
}
}
filterChain . doFilter ( requestToUse , response ) ;
}
@ -89,7 +92,7 @@ public class HiddenHttpMethodFilter extends OncePerRequestFilter {
@@ -89,7 +92,7 @@ public class HiddenHttpMethodFilter extends OncePerRequestFilter {
public HttpMethodRequestWrapper ( HttpServletRequest request , String method ) {
super ( request ) ;
this . method = method ;
this . method = method . toUpperCase ( Locale . ENGLISH ) ;
}
@Override