Использование глобального атрибута modelattribute в советах другого контроллера весной

#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 их тоже много.