Zem*_*ela 14 rest spring spring-security
我正在使用ResponseEntityExceptionHandler来全局处理错误并且几乎正常工作,除了我想用spring处理错误的请求.通过任何逻辑覆盖handleNoSuchRequestHandlingMethod应该处理这个,但是处理总是得到
HTTP状态404 -
类型状态报告
信息
description请求的资源不可用.
Apache Tomcat/7.0.37
我在控制台中启用debuging时得到了这个:
警告:org.springframework.web.servlet.PageNotFound - 找不到带URI的HTTP请求的映射
只是为了通过处理澄清我的意思是我正在返回JSON.
任何想法如何处理这个?
Jak*_*tka 21
原因是在那里,在DispatcherServlet类; 它发送错误响应而不必费心调用异常处理程序(默认情况下).
由于4.0.0.RELEASE这种行为可以简单地改变与throwExceptionIfNoHandlerFound参数:
设置是否在未找到此请求的Handler时抛出NoHandlerFoundException.然后可以使用HandlerExceptionResolver或
@ExceptionHandler控制器方法捕获此异常.
XML配置:
<servlet>
<servlet-name>rest-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
Run Code Online (Sandbox Code Playgroud)
基于Java的配置:
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后NoHandlerFoundException可以像这样处理:
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@Override
ResponseEntity handleNoHandlerFoundException(NoHandlerFoundException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
// return whatever you want
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9333 次 |
| 最近记录: |