Как вы правильно сказали, HandlerExceptionResolver
не будет вызываться при возникновении исключения из представления.Эти средства распознавания специально предназначены для исключений контроллера.
В этом случае лучше всего использовать HandlerInterceptor
и переопределить метод afterCompletion
, который будет содержать исключение, выбрасываемое представлением.Вы можете быть в состоянии отправить перенаправление отсюда, в зависимости от того, был ли ответ уже зафиксирован представлением.
Я не понимаю, как аспекты могли бы помочь вам здесь,или.Не инструмент для этой работы.
Тем не менее, я советую вам прекратить использование открытых компонентов в вашем JSP.Я понимаю, что это заманчиво удобно, но это та проблема, которую вы получаете от его использования.Я советую вашему контроллеру собрать все данные, необходимые для представления, вставить их в модель и отправить в представление.Таким образом, существует меньшая опасность того, что представление вызывает исключение, поскольку оно уже имеет все необходимое.
Кроме того, если вам нужно отправить перенаправление, как вы делаете, тогда вам действительно нужно сделать это до представление начинает выполняться.В противном случае слой представления может начать записывать заголовки HTTP-ответа до того, как сгенерирует исключение.Если это произойдет, вы не сможете вместо этого отправить перенаправление - ответ «зафиксирован».