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

时间:2016-09-30 17:28:44

标签: 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"));
    };
}

但现在它只是重定向到空白页面......

解决方案?我基本上实现了错误控制器并强制所有重定向到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");
}
}

1 个答案:

答案 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错误页面。