现在,所有 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"));
};
}
但现在它只是重定向到一个空白页面...
解决方案?我基本上实现了错误 Controller 并强制所有内容重定向到错误页面。我的错误页面是一个位于 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");
}
}
最佳答案
编辑:您可能需要删除 Bean 定义才能使其正常工作,因为我看到您在我提交答案后添加了该定义。
将 thymeleaf 依赖项添加到您的 pom 中:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
根据您的 Spring Boot 版本,将两者之一添加到您的应用程序属性文件中:
error.whitelabel.enabled=false
或
server.error.whitelabel.enabled=false
创建/src/main/resources/templates
文件夹。
将一个名为 error.html
的文件添加到此文件夹,其中包含您要显示的 html。
我们所做的是使用 thymeleaf 模板引擎来使用默认的 error.html 文件,并告诉 Spring Boot 不要使用其默认的白标签错误页面。
关于java - 如何为 Spring Boot 中的所有错误配置/设置重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796944/