Есть ли способ, чтобы мои методы @ExceptionHandler
имели доступ к атрибутам модели, заполненным методом @RequestMapping
, который вызвал рассматриваемое исключение?Модельное население весной MVC @ExceptionHandler
Или, более конкретно, для моей проблемы: мои модели, переданные моим представлениям, имеют некоторые данные, заполненные из @ModelAttribute
(например, подробная информация об учетной записи пользователя), и я хотел бы, чтобы они также были установлены в моих методах @ExceptionHandler
,
Например, поскольку моя страница просмотра ошибок использует тот же заголовок и меню, что и другие мои страницы, я хочу показать текущее имя пользователя (и другую информацию, например, количество непрочитанных сообщений и т. Д.).
Я знаю, что @ExceptionHandler
существует за пределами @Transaction
(как и должно быть!), Поэтому я, очевидно, не могу просто (и не хочу) запускать некоторые запросы снова. Скорее, я хотел бы предварительно заполнить ModelMap
или ModelAndView
или что-то еще, и убедитесь, что обработчик исключений справляется с этим - или, по крайней мере, данные модели становятся доступными при визуализации представления.
Я надеюсь, что этот вопрос имеет смысл, я довольно новый для Spring MVC, так что я может быть смешиванием нескольких концепций здесь и там ...
В случае, если это полезно для всех, кто найдет это, как у меня, - на момент написания статьи Javadocs, связанный выше, включал 8-й вариант: «Модель как альтернатива возврату модели модели из метода обработчика. при условии, что модель не предварительно заполнена обычными атрибутами модели и поэтому всегда пуста, в качестве удобства для подготовки модели для конкретного исключения vi РЭБ». Это довольно явно противоречит сообщению в блоге, связанному с ответом freakman, который, насколько я могу судить по экспериментам, правилен, и Javadocs ошибаются. Спасибо Spring :) – DaveyDaveDave
@DaveyDaveDave Спасибо за комментарий. Я добавил 8-й вариант. – geoand
К сожалению - я хотел добавить, после немного большего количества расследований я заметил, что 8-й вариант был добавлен только некоторое время между версиями v4.1.7 и v4.2.2.Чтобы быть ясным, параметр модели здесь не та же модель, что и у вас, если бы метод контроллера продолжался без исключения; это новая пустая модель, готовая к заполнению и использованию на вашей странице ошибок. – DaveyDaveDave