【发布时间】:2017-08-07 17:04:38
【问题描述】:
我正在尝试为 SpringMvc(Spring-boot 版本 1.5.1)中的无效 URL 创建自定义错误页面。
为了禁用默认的白标签错误页面,我有:
application.properties
spring.thymeleaf.cache=false
server.error.whitelabel.enabled=false
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
我的异常处理程序是:
RestResponseEntityExceptionHandler.java
@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
public RestResponseEntityExceptionHandler() {
super();
}
@Override
protected ResponseEntity<Object> handleNoHandlerFoundException(NoHandlerFoundException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
logger.error("404 Status Code", ex);
final GenericResponse bodyOfResponse = new GenericResponse(messages.getMessage("No such page", null, request.getLocale()), "NoHandlerFound");
return handleExceptionInternal(ex, bodyOfResponse, new HttpHeaders(), HttpStatus.NOT_FOUND, request);
}
}
这原则上是可行的。如果我在浏览器中访问一个无效的 URL,我会得到一个如下所示的 JSON:
{"message":"没有这样的页面","error":"NoHandlerFound"}
我想显示一个正确的 HTML 视图(类似于 whitelabel 页面),而不是 JSON 响应。这应该是一个模板,我可以在其中替换“消息”字符串。我该如何渲染这个视图?
【问题讨论】:
标签: spring-mvc model-view-controller spring-boot exception-handling