I'm using Spring MVC 3.2 @RequestMapping and @ResponseBody as REST Service. A example endpoint looks like this:
@RequestMapping(value = "query", method = RequestMethod.GET)
@ResponseBody
public Locations searchHandler(@RequestParam String q, HttpServletRequest request, HttpServletResponse response) {
...
Sending a wrong request for non existing endpoints or missing GET parameter q will show the Tomcat 7 error report:
<html>
<head>
<title>Apache Tomcat/7.0.50 - Error report</title>
<style>
<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}-->
</style>
</head>
<body>
<h1>HTTP Status 404 - </h1>
<HR size="1" noshade="noshade">
<p>
<b>type</b> Status report
</p>
<p>
<b>message</b>
<u></u>
</p>
<p>
<b>description</b>
<u>The requested resource is not available.</u>
</p>
<HR size="1" noshade="noshade">
<h3>Apache Tomcat/7.0.50</h3>
</body>
</html>
How can I disable this error page. I just want the error message as content without any HTML or further informations.
Ok I found the Solution. I implemented a Exception handler as described in the link above:
@ControllerAdvice
public class ErrorController {
/**
* .
* @param request .
* @param response .
* @throws Exception .
*/
@ExceptionHandler(Exception.class)
public void handleConflict(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {
// If the exception is annotated with @ResponseStatus rethrow it and let
// the framework handle it - like the OrderNotFoundException example
// at the start of this post.
// AnnotationUtils is a Spring Framework utility class.
if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) {
throw e;
}
response.setStatus(400);
response.getWriter().println(e.getMessage());
}
}
Its important to use response.getWriter()... instead of using response.sendError().
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With