From 06d95915a01ec0944347fabd86f6dd2cd4c2e2da Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 21 Aug 2012 12:35:17 -0400 Subject: [PATCH] Add error message for missing servlet request param. The DefaultHandlerExceptionResolver now provides an error message in addition to setting the status of the response. Issue: SPR-9312 --- .../MissingServletRequestPartException.java | 16 ++++++++-------- .../support/DefaultHandlerExceptionResolver.java | 4 ++-- .../DefaultHandlerExceptionResolverTests.java | 2 ++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/multipart/support/MissingServletRequestPartException.java b/spring-web/src/main/java/org/springframework/web/multipart/support/MissingServletRequestPartException.java index 0ee85e75cc..422517bd63 100644 --- a/spring-web/src/main/java/org/springframework/web/multipart/support/MissingServletRequestPartException.java +++ b/spring-web/src/main/java/org/springframework/web/multipart/support/MissingServletRequestPartException.java @@ -22,13 +22,13 @@ import org.springframework.web.multipart.MultipartResolver; /** * Raised when the part of a "multipart/form-data" request identified by its - * name cannot be found. - * - *

This may be because the request is not a multipart/form-data - * - * either because the part is not present in the request, or - * because the web application is not configured correctly for processing - * multipart requests -- e.g. no {@link MultipartResolver}. + * name cannot be found. + * + *

This may be because the request is not a multipart/form-data + * + * either because the part is not present in the request, or + * because the web application is not configured correctly for processing + * multipart requests -- e.g. no {@link MultipartResolver}. * * @author Rossen Stoyanchev * @since 3.1 @@ -40,7 +40,7 @@ public class MissingServletRequestPartException extends ServletException { private final String partName; public MissingServletRequestPartException(String partName) { - super("Request part '" + partName + "' not found."); + super("Required request part '" + partName + "' is not present."); this.partName = partName; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java index 104d9da351..bf0e69649f 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java @@ -258,7 +258,7 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { - response.sendError(HttpServletResponse.SC_BAD_REQUEST); + response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage()); return new ModelAndView(); } @@ -384,7 +384,7 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes */ protected ModelAndView handleMissingServletRequestPartException(MissingServletRequestPartException ex, HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { - response.sendError(HttpServletResponse.SC_BAD_REQUEST); + response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage()); return new ModelAndView(); } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolverTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolverTests.java index 0ef1163958..9fdc1bdc7f 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolverTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolverTests.java @@ -98,6 +98,7 @@ public class DefaultHandlerExceptionResolverTests { assertNotNull("No ModelAndView returned", mav); assertTrue("No Empty ModelAndView returned", mav.isEmpty()); assertEquals("Invalid status code", 400, response.getStatus()); + assertEquals("Required bar parameter 'foo' is not present", response.getErrorMessage()); } @Test @@ -156,6 +157,7 @@ public class DefaultHandlerExceptionResolverTests { assertNotNull("No ModelAndView returned", mav); assertTrue("No Empty ModelAndView returned", mav.isEmpty()); assertEquals("Invalid status code", 400, response.getStatus()); + assertEquals("Required request part 'name' is not present.", response.getErrorMessage()); } @Test -- GitLab