我已经找到了很多问题和答案,但似乎无论我做什么我都无法绕过404错误的默认白标应用页面。使用启动版本1.4.x
我正在做的是在我的application.yml:
spring:
mvc:
throw-exception-if-no-handler-found: true
然后定义我自己的ResponseEntityExceptionHandler
子类,用@ControllerAdvice
注释
我被覆盖的handleNoHandlerFoundException
@ControllerAdvice
public class ThisIsNotWorking extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleNoHandlerFoundException(final NoHandlerFoundException ex,
final HttpHeaders headers, final HttpStatus status,
final WebRequest request) {
logger.info(ex.getClass().getName());
final String error = "No handler found for " + ex.getHttpMethod() + " " + ex.getRequestURL();
^^上面只有一个片段而不是所有的逻辑。
但是当我导航到我的启动应用程序的错误路径时,我在浏览器中出现错误的json。我还需要做什么?最终,我想以自定义的方式为我的应用程序处理这些404。
答案 0 :(得分:1)
我的工作无法绕过404的默认白标应用页面 错误
基本上,要处理whitelabel错误(404
)页面,您只需使用addErrorPages
内的customize()
EmbeddedServletContainerCustomizer
并处理404
错误,如图所示下面(您的代码中不需要@ControllerAdvice
handleNoHandlerFoundException()
方法):
@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND,
"/YOUR_PAGE.html"));
}
}