2016-02-05 6 views
0

В моем проекте MVC Spring я добавил класс перехватчика, чтобы проверить, было ли вызвано перенаправление.Как проверить перехватчик, вызвал ли контроллер перенаправление

Вот мой контроллер класса:

@Controller 
public class RedirectTesterController { 

    @RequestMapping (value="/page1") 
    public String showPage1(){ 

     return "page1"; 
    } 

    @RequestMapping (value="/submit1") 
    public String submitPage1(){ 

     return "redirect:/page2"; 
    } 

    @RequestMapping (value="/page2") 
    public String showPage2(){ 

     return "page2"; 
    } 

} 

Так, если я позвоню, например

локальный: 8080/MyContext/submit1

метод "submitPage1" выполняется.

Теперь - сервер сообщает клиенту, чтобы позвонить

локальный: 8080/MyContext/стр.2

, который также работает.

Итак - я хочу войти в этот процесс, после того как был выполнен метод «submitPage1». На мой взгляд, в httpResponse должен быть некоторый порядок/команда, о которой я мог бы задать.

Чтобы проверить это, я сделал точку останова в классе перехватчика в методе: «postHandle» - бит с тех пор, я понятия не имею, как продолжить. Я попытался прочитать outputStream, но это приводит к сбою моего приложения. (приводит к исключению -> outputStream уже вызван ..).

Не существует ли для этого простого решения?

ответ

0

Следующий пример показывает, как проверить, если вид является redirect:

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(new HandlerInterceptorAdapter() { 
      @Override 
      public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 
            ModelAndView modelAndView) throws Exception { 
       if (modelAndView != null && StringUtils.startsWithIgnoreCase(modelAndView.getViewName(), "redirect:")) { 
        // handle redirect... 
       } 
      } 
     }); 
    } 
} 

См: HandlerInterceptorAdapter, StringUtils

Spring MVC Документация: Intercepting requests with a HandlerInterceptor