Вы также можете отслеживать ModelAndView (или просто представление), который был последний раз представлен пользователю с перехватчиком. В этом примере отслеживаются только последние модель и вид, но вы можете использовать список для перехода на другие уровни.
package com.sample;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LastModelAndViewInterceptor extends HandlerInterceptorAdapter {
public static final String LAST_MODEL_VIEW_ATTRIBUTE = LastModelAndViewInterceptor.class.getName() + ".lastModelAndView";
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
request.getSession(true).setAttribute(LAST_MODEL_VIEW_ATTRIBUTE, modelAndView);
super.postHandle(request, response, handler, modelAndView);
}
}
С конфигурацией Spring XML:
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<bean class="com.sample.LastModelAndViewInterceptor"/>
</property>
</bean>
И затем используйте следующий код, чтобы вернуться к этому представлению в контроллере:
ModelAndView mv = (ModelAndView)request.getSession().getAttribute(LastModelAndViewInterceptor.LAST_MODEL_VIEW_ATTRIBUTE);
return mv;