перенаправленный запрос при возникновении исключения - PullRequest
3 голосов
/ 12 декабря 2010

в моем приложении (используя пружину),

Я пытаюсь вызвать метод из представления, используя springingingingBean. и когда я пытаюсь вызвать метод из представления, он выдает ошибку. я пытаюсь поймать с HandlerExceptionResolver, но не повезло, я думаю, что это не может быть обработано HandlerExceptionResolver, потому что исключение не было выдано в контроллер.

, поэтому я пытаюсь другим способом перенаправить запрос при возникновении исключения. и я думаю, что аспект имеет возможность сделать это. Можно ли перенаправить запрос при исключении из аспекта?

1 Ответ

4 голосов
/ 12 декабря 2010

Как вы правильно сказали, HandlerExceptionResolver не будет вызываться при возникновении исключения из представления.Эти средства распознавания специально предназначены для исключений контроллера.

В этом случае лучше всего использовать HandlerInterceptor и переопределить метод afterCompletion, который будет содержать исключение, выбрасываемое представлением.Вы можете быть в состоянии отправить перенаправление отсюда, в зависимости от того, был ли ответ уже зафиксирован представлением.

Я не понимаю, как аспекты могли бы помочь вам здесь,или.Не инструмент для этой работы.

Тем не менее, я советую вам прекратить использование открытых компонентов в вашем JSP.Я понимаю, что это заманчиво удобно, но это та проблема, которую вы получаете от его использования.Я советую вашему контроллеру собрать все данные, необходимые для представления, вставить их в модель и отправить в представление.Таким образом, существует меньшая опасность того, что представление вызывает исключение, поскольку оно уже имеет все необходимое.

Кроме того, если вам нужно отправить перенаправление, как вы делаете, тогда вам действительно нужно сделать это до представление начинает выполняться.В противном случае слой представления может начать записывать заголовки HTTP-ответа до того, как сгенерирует исключение.Если это произойдет, вы не сможете вместо этого отправить перенаправление - ответ «зафиксирован».

...