【发布时间】:2018-08-09 14:56:17
【问题描述】:
请指导我。
陷入与 Spring MVC 相关的 2 个问题 -
- 在我的项目中,每当发生异常时,整个堆栈跟踪都会打印在响应中。像这样 -
{ “原因”:空, “堆栈跟踪”: [ { "methodName": "resolveHandlerMethod", "fileName": "AnnotationMethodHandlerAdapter.java", “行号”:123, "className": "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodResolver", “本机方法”:假 }, ...
我尝试通过查看各种建议(例如 @ControllerAdvice 和 @Order(0),甚至在 web.xml 中)来消除此问题 -
<error-page>
<location>/error/GeneralError</location>
</error-page>
因此,我能够利用 NPE 等控制器抛出的异常,但与 HTTP URL 相关的异常(我相信发生在控制器映射之前)我无法捕捉到。
就像在我的场景中一样,如果用户在 REST 客户端中输入 POST 请求而不是适用的 GET URL,尽管日志中报告的错误是这样的 -
Aug 09, 2018 7:05:00 PM org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported
WARNING: Request method 'POST' not supported
仍然是 web.xml 中的 @ControllerAdvice 或错误映射,无法在此处和此处捕获 405 错误,因为我没有机会添加我的自定义消息。
对我有什么建议吗?
- 其次我尝试扩展
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
,并将它与 web.xml 中的 bean 定义一起使用,带有 @Controller 和 @ExceptionHandler 注释,Spring 框架仍然只是简单地忽略了我的努力,并再次使用默认的。
我们不能修改这种行为吗?
【问题讨论】:
标签: java spring spring-mvc model-view-controller