Browse Source

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
pull/120/merge
Rossen Stoyanchev 14 years ago
parent
commit
06d95915a0
  1. 16
      spring-web/src/main/java/org/springframework/web/multipart/support/MissingServletRequestPartException.java
  2. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java
  3. 2
      spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolverTests.java

16
spring-web/src/main/java/org/springframework/web/multipart/support/MissingServletRequestPartException.java

@ -22,13 +22,13 @@ import org.springframework.web.multipart.MultipartResolver; @@ -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.
*
* <p>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.
*
* <p>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 { @@ -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;
}

4
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java

@ -258,7 +258,7 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -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 @@ -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();
}

2
spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolverTests.java

@ -98,6 +98,7 @@ public class DefaultHandlerExceptionResolverTests { @@ -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 { @@ -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

Loading…
Cancel
Save