java - 如何为 Spring Boot 中的所有错误配置/设置重定向?

标签 java spring-boot

现在,所有 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/

相关文章:

java webstart 应用程序启动时间太慢

java - 根据对象的属性对 TreeMap<Integer, Object> 进行排序

java - 我在我的 IP 地址上找不到我的端口号

java - 通过 SSE 订阅的 Flux 引发 cancel() 事件

java - 禁用 spring 引导执行器端点 java 配置

java - 如何更改字符串中的字符 - 替换字母java

java - 如何使用文件每一行的 linkedList 的最后一个元素创建一个新目录

java - Spring(-Boot) & Vaadin - 在 Vaadin 导航器中设置默认 View

java - 无法配置 Java Spring Boot 数据 session Mongodb

hibernate - Docker 中的 Spring Boot 抛出异常 'hibernate.dialect' 未设置