- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
阅读 Spring Reference Guide on how to handle NoHandlerFoundException并发现 Spring 默认设置为 throwExceptionIfNoHandlerFound
至 false
.
知道了这一点,我认为将此参数设置为 true
是个好主意。 .
我正在使用 Spring Boot。
这样做了:
MyConfig.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
@SpringBootApplication
public class MyConfig {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(MyConfig.class, args);
context.getBean(DispatcherServlet.class).setThrowExceptionIfNoHandlerFound(true);
// ...
}
}
throwExceptionIfNoHandlerFound
等于
true
.然而,这并没有像预期的那样奏效。
DispatcherServlet
继续不扔了
NoHandlerFoundException
.这样一来,我就无法处理了。
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.NoHandlerFoundException;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity <Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
// do my own handle ...
// then, return ...
}
}
@EnableWebMvc
应该管用。然后,我确实将此注释添加到了我的
CustomExceptionHandler
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.NoHandlerFoundException;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@EnableWebMvc
@ControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity <Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
// do my own handle ...
// then, return ...
}
}
@EnableWebMvc
,我会失去一些 Spring Boot MVC 自动配置功能,因为我会完全控制 Spring MVC。 (
See here )。
"If you want to take complete control of Spring MVC, you can add your own @Configuration annotated with @EnableWebMvc."
@EnableWebMvc
,就我而言,它不在
@Configuration
中类(class)。
最佳答案
Spring Boot 自动配置会自动添加一个 ResourceHttpRequestHandler
处理服务静态资源。默认情况下,此处理程序映射到 /**
并且是处理程序链中的最后一项。
这意味着 DispatcherServlet
不会扔 NoHandlerFoundException
因为它找到了资源处理程序。资源处理程序处理请求并调用 response.sendError(HttpServletResponse.SC_NOT_FOUND)
返回 404。
如果您不想要这种行为,您可以将以下内容添加到您的 application.properties
:
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
关于java - Spring Boot - 处理 NoHandlerFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51048707/
阅读 Spring Reference Guide on how to handle NoHandlerFoundException并发现 Spring 默认设置为 throwExceptionIfN
我正在使用@ControllerAdvice处理异常,我的其余 Controller 有@ControllerAdvice,非休息 Controller 有@ControllerAdvice,他们正在
我正在尝试找出抛出以下异常的原因。 我认为这是因为在“ View ”模式下访问了一个 portlet,但出于某种原因我不知道 spring servlet 容器无法满足请求,这是否正确? 以下异常集中
请帮我解决这个问题。我正在使用 spring 4 maven 项目,spring java cofigaration。模型和 View 不起作用。我已经两天遇到这个问题了,真的很累。 2017-05-
我是一名优秀的程序员,十分优秀!