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
This commit is contained in:
Rossen Stoyanchev
2012-08-21 12:35:17 -04:00
parent 1cf4a2facd
commit 06d95915a0
3 changed files with 12 additions and 10 deletions

View File

@@ -22,13 +22,13 @@ import org.springframework.web.multipart.MultipartResolver;
/** /**
* Raised when the part of a "multipart/form-data" request identified by its * Raised when the part of a "multipart/form-data" request identified by its
* name cannot be found. * name cannot be found.
* *
* <p>This may be because the request is not a multipart/form-data * <p>This may be because the request is not a multipart/form-data
* *
* either because the part is not present in the request, or * either because the part is not present in the request, or
* because the web application is not configured correctly for processing * because the web application is not configured correctly for processing
* multipart requests -- e.g. no {@link MultipartResolver}. * multipart requests -- e.g. no {@link MultipartResolver}.
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @since 3.1 * @since 3.1
@@ -40,7 +40,7 @@ public class MissingServletRequestPartException extends ServletException {
private final String partName; private final String partName;
public MissingServletRequestPartException(String partName) { public MissingServletRequestPartException(String partName) {
super("Request part '" + partName + "' not found."); super("Required request part '" + partName + "' is not present.");
this.partName = partName; this.partName = partName;
} }

View File

@@ -258,7 +258,7 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex, protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { 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(); return new ModelAndView();
} }
@@ -384,7 +384,7 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
*/ */
protected ModelAndView handleMissingServletRequestPartException(MissingServletRequestPartException ex, protected ModelAndView handleMissingServletRequestPartException(MissingServletRequestPartException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { 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(); return new ModelAndView();
} }

View File

@@ -98,6 +98,7 @@ public class DefaultHandlerExceptionResolverTests {
assertNotNull("No ModelAndView returned", mav); assertNotNull("No ModelAndView returned", mav);
assertTrue("No Empty ModelAndView returned", mav.isEmpty()); assertTrue("No Empty ModelAndView returned", mav.isEmpty());
assertEquals("Invalid status code", 400, response.getStatus()); assertEquals("Invalid status code", 400, response.getStatus());
assertEquals("Required bar parameter 'foo' is not present", response.getErrorMessage());
} }
@Test @Test
@@ -156,6 +157,7 @@ public class DefaultHandlerExceptionResolverTests {
assertNotNull("No ModelAndView returned", mav); assertNotNull("No ModelAndView returned", mav);
assertTrue("No Empty ModelAndView returned", mav.isEmpty()); assertTrue("No Empty ModelAndView returned", mav.isEmpty());
assertEquals("Invalid status code", 400, response.getStatus()); assertEquals("Invalid status code", 400, response.getStatus());
assertEquals("Required request part 'name' is not present.", response.getErrorMessage());
} }
@Test @Test