#java #spring #spring-mvc #thymeleaf
Вопрос:
У меня есть два глобальных класса рекомендаций контроллера, определенных следующим образом.
@ControllerAdvice
public class GlobalModelAttributes {
@ModelAttribut("mkey")
public String mKey() {
return "aValue";
}
}
Другой класс для обработки исключений.
@ControllerAdvice
public class GlobalExceptionHandler {
private static final String ERROR_4_XX = "error/4xx";
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler({InvalidRequestException.class}
)
public ModelAndView handleBadRequest() {
ModelAndView result = new ModelAndView(ERROR_4_XX);
result.addObject(EXCEPTION_MESSAGE, "An invalid value provided");
return resu<
}
}
И в error/4xx.html
я использовал значение mkey
, предполагающее, что я получу значение в представлении.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<link th:rel="stylesheet" href="/css/error.css" type="text/css" />
</head>
<body>
<div class="container">
<div class="bg-container">
<h1 class="text-err">
<span th:text="${mkey}"></span>
</h1>
</div>
</div>
</body>
</html>
Однако значение не напечатано, и я нашел следующую ссылку (8 лет, но все еще действительную), где упоминается, что такое значение недоступно для просмотра исключений.
https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
- Методы улучшения модели (для добавления дополнительных данных в модель), помеченные @ModelAttribute . Обратите внимание, что эти атрибуты недоступны для представлений обработки исключений.
Я считаю, что был бы способ получить этот глобальный атрибут модели. Я не хочу копировать эти атрибуты модели @ExceptionHandler
, поскольку их много, и @ExceptionHandler
их тоже много.