从拦截器将消息传递到Spinrg MVC控制器中的动作

时间:2015-06-17 00:47:03

标签: spring-mvc interceptor

控制者行动之一

@RequestMapping("/user/login")
public String loginPage(String errorMessage, Model model) {
    model.addAttribute("errorMessage", errorMessage);

    return "/view/loginPage";
}

viewPage.jsp的片段

<div id="alertError">Failed to get data because : ${errorMessage}</div>

拦截器的一个片段

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    HttpSession session = request.getSession();
    User user = (User)session.getAttribute("user")

    if ( user == null ) {
        response.sendRedirect("/user/login.do");
    }
}

是时候解释了。

如果session为null,拦截器会检查会话并重定向到signin页面。我希望在完全重定向后显示消息your session was expired. Please sign in

但是在拦截器中,我无法找到将消息传递给loginPage动作的任何方法。我怎么能这样做?

仅供参考,直接调用loginPage方法对我来说不是一个答案。

1 个答案:

答案 0 :(得分:0)

您可以将邮件作为查询参数传递。

response.sendRedirect("/user/login.do?errMessage=yourMessage");

在控制器方面,它可以被检索为

@RequestMapping("/user/login")
public String loginPage(@RequestParam("errMessage") String errMessage, Model model) {