我正在尝试使用ErrorViewResolver,尝试从ModelAndView重定向视图,但它始终显示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");
}
}
application.properties
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
server.error.whitelabel.enabled=false
控制器
@GetMapping(value = {"/page"})
public ModelAndView page() {
return new ModelAndView("test");
}
Spring Security:
@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的错误/功能?
答案 0 :(得分:1)
Spring Boot 1.5.20.RELEASE
取决于tomcat-embed-core 8.5.39
,并且tomcat版本具有一些重大更改。尝试使用旧的tomcat-embed-core
版本。