最近遇到一个要求登录后重定向到相应页面的功能,通过摸索基本上实现了这个功能
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");
}
}这样就可以简单实现重定向登录功能。