现在,所有404/500都会产生json错误消息。
如何配置它以便在所有404/500上重定向到特定的错误页面?
我已将以下内容添加到初始化程序类中:
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return container -> {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/errorpage"));
container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/errorpage"));
};
}
但现在它只是重定向到空白页面......
解决方案?我基本上实现了错误控制器并强制所有重定向到errorpage。我的errorpage是一个生活在WEB-INF / pages下的jsp。现在这是对的吗?
@RestController
@RequestMapping("/errorpage")
public class SimpleErrorController implements ErrorController {
@Autowired
public SimpleErrorController(ErrorAttributes errorAttributes) {
Assert.notNull(errorAttributes, "ErrorAttributes must not be null");
}
@Override
public String getErrorPath() {
return "/errorpage";
}
@RequestMapping(produces = {"text/html"})
public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {
response.setStatus(400);
return new ModelAndView("errorpage");
}
}
答案 0 :(得分:1)
编辑:您可能需要删除您的Bean定义才能使用,因为我看到您在提交答案后添加了该定义。
将百万美元的依赖性添加到你的pom:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
根据您的春季启动版本,将两者中的一个添加到您的应用程序属性文件中:
error.whitelabel.enabled=false
或
server.error.whitelabel.enabled=false
创建/src/main/resources/templates
文件夹。
使用您要显示的html将名为error.html
的文件添加到此文件夹中。
我们所做的是使用百万美元模板引擎来使用默认的error.html文件,并告诉Spring Boot不要使用其默认的whitelabel错误页面。