如何区分重定向:是否在HandlerInterceptorAdaptor.preHandle()中进行重定向?我需要清除每个新请求的会话属性,除了它是重定向:从控制器类。
例如
拦截器类
public class RequestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
//CHECK whether it's a redirect:, if NO then clear session attribute.
HttpSession session = req.getSession(false);
session.removeAttribute("attributeKey");
}
}
控制器类
@RequestMapping(value = "/detail", method = RequestMethod.GET)
private String viewDetails(HttpSession session, ...) {
//program logic here
}
@RequestMapping(value = "/updatedetail", method = RequestMethod.GET)
private String updateDetails(HttpSession session, ...) {
//program logic here
//set session attribute
session.setAttribute("attributeKey", someobject);
//redirect, but i want the session attribute to be visible to the page instead of cleared by interceptor
return "redirect:detail";
}
最佳答案
model.addAttribute("attributeKey", someObject);
return "redirect:detail";
并隐藏
attributeKey
:<bean id="myBean" class="org.springframework.web.servlet.view.RedirectView">
<property name="exposeModelAttributes" value="false"/>
<property name="url" value="/detail"/>
</bean>