最近遇到一个要求登录后重定向到相应页面的功能,通过摸索基本上实现了这个功能
1 在登录拦截器中添加以下代码,把原来的请示参数保存到sesssion中。
HttpServletRequest request = inv.getController().getRequest(); Enumeration pNames = request.getParameterNames(); String redir = inv.getActionKey() + "?"; while (pNames.hasMoreElements()) { String name = (String) pNames.nextElement(); redir += (name + "=" + request.getParameter(name)); } inv.getController().setSessionAttr("redir", URLEncoder.encode(redir));
2 在登录页面Form里添加
<input type="hidden" name="redir" value="#(session.redir??)">
3 在用户登录功能中相应修改实现以下功能
public void dologin() { String redir = URLDecoder.decode(getPara("redir")); String code = getPara("code"); String usrName = getPara("usrName"); String usrPwd = getPara("usrPwd"); if ("1".equals(usrName) && "1".equals(usrPwd)) { setSessionAttr("isLogin", true); if (StrKit.notBlank(redir)) { redirect(redir); } else { redirect("/admin"); } } else { keepPara(); render("index.html"); } }
这样就可以简单实现重定向登录功能。