login函数
@Clear({LoginInterceptor.class}) public void login() throws UnsupportedEncodingException { logger.info("进行会员登录操作..."); // 获取用户名 String name = getPara("username"); // 获取密码 String password = getPara("password"); Members mem = Members.me.getMemByUsername(name); if (mem != null) {// 用户不存在 // 密码不匹配 if (!mem.getStr("password").equals(CipherUtils.generatePassword(password))) { ajaxDoneError("密码不正确!"); } else { // 保存session setSessionAttr("username", mem); String forwardURL = getPara("forwardURL"); if (forwardURL == null || forwardURL.equals("")) { forwardURL = "/"; } else { forwardURL = URLDecoder.decode(forwardURL, "UTF-8"); } ajaxDoneSuccess("登录成功!", forwardURL); } } else { ajaxDoneError("用户不存在!"); } }
1. login函数中,将forwardurl取出来,作为**登录页**中的callback函数的参数值; 2. 具体ajaxDoneSuccess方法可以参照以下内容
public void ajaxDoneSuccess(String message, String forwardURL) { ajaxDone(200, message, forwardURL); } protected void ajaxDone(int statusCode, String message, String forwardURL) { // 回调类型 if (getAttr("callbackType") == null) { String callbackType = getPara("callbackType"); if (callbackType != null && !callbackType.equals("")) { setAttr("callbackType", callbackType); if (callbackType.equals("forward") || callbackType.equals("closeCurrentThenForward")) { String contextPath = getRequest().getContextPath(); if (forwardURL.indexOf(contextPath) == -1) { forwardURL = contextPath + forwardURL; } setAttr("forwardURL", forwardURL); } } } renderJson(); }
如果有callbacktype参数,则将forwardurl作为json数据传递到前端的ajaxdone方法中。