Есть ли способ проверить, является ли HttpResponse перенаправлением или нет в перехватчике Spring?

#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. Я отредактирую с помощью некоторого примера кода.