diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java index fdb07351cf3..d7fc620a584 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java @@ -904,7 +904,7 @@ public class DispatcherServlet extends FrameworkServlet { try { processedRequest = checkMultipart(request); - multipartRequestParsed = processedRequest != request; + multipartRequestParsed = (processedRequest != request); // Determine handler for the current request. mappedHandler = getHandler(processedRequest); @@ -1059,6 +1059,10 @@ public class DispatcherServlet extends FrameworkServlet { logger.debug("Request is already a MultipartHttpServletRequest - if not in a forward, " + "this typically results from an additional MultipartFilter in web.xml"); } + else if (request.getAttribute(WebUtils.ERROR_EXCEPTION_ATTRIBUTE) instanceof MultipartException) { + logger.debug("Multipart resolution failed for current request before - " + + "skipping re-resolution for undisturbed error rendering"); + } else { return this.multipartResolver.resolveMultipart(request); }