我正在尝试使用 ErrorViewResolver,尝试从 ModelAndView 重定向 View ,但它一直显示 404 http 状态错误。我使用的Spring Boot版本是1.5.20.RELEASE。当我将版本降级到 1.5.1x.RELEASE 或升级到 2.x 时,它已成功重定向。
这里是示例代码:
@Component
public class MyErrorResolveView implements ErrorViewResolver {
@Override
public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
// return new ModelAndView("test"); // this work fine
return new ModelAndView("redirect:/page");
}
}
应用程序属性
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
server.error.whitelabel.enabled=false
Controller
@GetMapping(value = {"/page"})
public ModelAndView page() {
return new ModelAndView("test");
}
Spring 安全:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().disable().csrf().disable().authorizeRequests().anyRequest().permitAll();
}
JSP位置:src/main/webapp/WEB-INF/pages/test.jsp
使用bootRun运行,尝试访问http://localhost:8080/notExist ,预计会看到“测试”页面,但实际看到的是 HTTP ERROR 404 页面。
- Spring Boot 1.5.20.RELEASE
- java 1.8
- Gradle 5.2.1
我不确定是否遗漏了任何配置,或者这是 Spring Boot 1.5.20.RELEASE 的错误/功能?
最佳答案
Spring Boot 1.5.20.RELEASE
依赖于 tomcat-embed-core 8.5.39
并且 tomcat 版本有一些重大更改。尝试使用旧的 tomcat-embed-core
版本。
关于java - 在 Spring Boot 1.5.20.RELEASE 上无法重定向 ErrorViewResolver 内的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55835501/