gpt4 book ai didi

java - 基于 Controller 的错误页面 spring thymeleaf

转载 作者:行者123 更新时间:2023-11-30 06:48:35 25 4
gpt4 key购买 nike

我已经设法构建静态错误页面并使用这个 bean 重定向到它们:

    @Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {

return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
if (optiuniEnvironment.equals("development")) {
ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/404.html");

container.addErrorPages(error401Page, error404Page, error500Page);
}
}
};
}

但是,现在我想构建一个使用 Controller 功能的自定义页面。

所以在我的 Controller 中我有类似的东西

    @RequestMapping("/404.html")
String pageNotFound(Model model, HttpServletRequest request)
{
return "404";
}

并希望在遇到 HttpStatus 404 时重定向到它。

我相信答案是配置 DispatcherServlet,但不确定。有任何想法吗?谢谢!

(如果可能,请使用基于java的配置,而不是xml)

最佳答案

您可以使用以下方法处理这些错误:

  1. 在同一 Controller 中使用异常处理程序方法:

@ExceptionHandler(NoHandlerFoundException.class)
public String handle404Exception(NoHandlerFoundException ex) {
//do whatever you want
return "viewName";
}
  1. 创建异常 Controller

@ControllerAdvice
public class ExceptionController {

@ExceptionHandler(NoHandlerFoundException.class)
public String handle404Exception(NoHandlerFoundExceptionex) {
//do whatever you want
return "viewName";
}
}

如果使用 Spring Boot,请在 application.properties 中设置以下属性

server.error.whitelabel.enabled=false
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
  1. 添加错误页面注册器:

@Bean
public ErrorPageRegistrar errorPageRegistrar(){
return new CustomErrorPageRegistrar();
}

private static class CustomErrorPageRegistrar implements ErrorPageRegistrar {

// Register your error pages and url paths.
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
registry.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
}

}

并为相应的 url(例如/400)定义您的 Controller 端点

关于java - 基于 Controller 的错误页面 spring thymeleaf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44049960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com