#java #spring-mvc #interceptor
#java #spring-mvc #перехватчик
Вопрос:
Я хотел бы написать Spring MVC HandlerInterceptorAdaptor, который выполняет разные действия в методе postHandle() в зависимости от того, является ли HttpResponse перенаправлением или нет.
Возможно ли это, и если да, то как?
public class MenuInterceptor extends HandlerInterceptorAdapter {
public final void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws SystemException {
if (redirect) {
// do somethnig
} else {
// do something else
}
}
Редактировать:
Есть ли лучший способ, чем этот:
if (modelAndView.getView() instanceof RedirectView || modelAndView.getViewName().startsWith("redirect:")) {
// Do something
} else {
// Do something else
}
Ответ №1:
В Spring MVC контроллер обычно отправляет перенаправление, возвращая a View
, которое является a RedirectView
или строковое viewName, начинающееся с redirect:
префикса. Вы можете легко проверить наличие любого из них.
Комментарии:
1. Да, но только путем проверки типа представления и viewName.StartsWith . Я надеялся на лучший способ.
Ответ №2:
Какой именно «перехватчик» вы имеете в виду и / или какой «HttpResponse»? Если ваш HttpResponse имеет «код состояния» или «код ответа», вам просто нужно проверить это на наличие кода перенаправления. Обычно для перенаправлений используется 301.
Комментарии:
1. Думаю, мне нужно уточнить свой вопрос. Как указано в теле вопроса, перехватчик Spring. Я отредактирую с помощью некоторого примера кода.