SPR-6902 - @ResponseBody does not work with @ExceptionHandler

This commit is contained in:
Arjen Poutsma
2010-03-03 10:33:58 +00:00
parent 62f9f477f5
commit 7f8c91a52d
2 changed files with 87 additions and 2 deletions

View File

@@ -34,6 +34,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
@@ -91,6 +92,17 @@ public class AnnotationMethodHandlerExceptionResolverTests {
assertTrue("ModelAndView not empty", mav.isEmpty());
assertEquals("Invalid response written", "IllegalArgumentException", response.getContentAsString());
}
@Test
public void responseBody() throws UnsupportedEncodingException {
IllegalArgumentException ex = new IllegalArgumentException();
ResponseBodyController controller = new ResponseBodyController();
request.addHeader("Accept", "text/plain");
ModelAndView mav = exceptionResolver.resolveException(request, response, controller, ex);
assertNotNull("No ModelAndView returned", mav);
assertTrue("ModelAndView not empty", mav.isEmpty());
assertEquals("Invalid response written", "IllegalArgumentException", response.getContentAsString());
}
@Controller
private static class SimpleController {
@@ -147,4 +159,14 @@ public class AnnotationMethodHandlerExceptionResolverTests {
writer.write(ClassUtils.getShortName(ex.getClass()));
}
}
@Controller
private static class ResponseBodyController {
@ExceptionHandler(Exception.class)
@ResponseBody
public String handle(Exception ex) {
return ClassUtils.getShortName(ex.getClass());
}
}
}