我想使用 SpringBoot 返回自定义 404 错误,但我希望能够向其中添加一些服务器端逻辑,而不仅仅是提供静态页面。
<强>1。我关闭了 application.properties
error.whitelabel.enabled=false
<强>2。我在 resources/templates
顺便说一句,这是有效的。已提供页面,但未调用任何 Controller 。
<强>3。我创建了一个类 Error
作为“ Controller ”
package com.noxgroup.nitro.pages;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/error")
public class Error {
@ExceptionHandler
public String index() {
System.out.println("Returning Error");
return "index";
}
}
不幸的是,我没有在控制台的任何地方看到返回错误
打印。
我正在使用带有 Spring Boot 的嵌入式 Tomcat。我见过各种选项,但似乎都不起作用,包括使用 @ControllerAdvice、删除 RequestMapping 等。这两个选项都不适合我。
最佳答案
servlet 容器将在到达 Spring 之前获取 404,因此您需要在 servlet 容器级别定义一个错误页面,该页面转发到您的自定义 Controller 。
@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error"));
}
}
关于spring - 如何使用 Spring Boot 创建 404 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28897499/