登陆拦截跳转问题

public void intercept(Invocation inv) {

// TODO Auto-generated method stub

Controller con=inv.getController();

User a=con.getSessionAttr("userSession");

System.out.println(a);

if(a==null)

{

System.out.println("跳转吧");

con.setAttr("loginU", a);

con.redirect("/lgoin");

}

else

{

con.setAttr("loginU", a);

}

inv.invoke();

}

验证都正常但是就是不执行跳转哪位帮忙看下

评论区

JFinal

2016-12-14 10:37

将 inv.invoke(); 这一行放到 else 块中去,不要单放出来,基本的 if 分支逻辑

qin

2016-12-14 10:46

@JFinal 方法else 里也没有用 在运行就提示这个Page load failed with error: 太多的 HTTP 重定向

qin

2016-12-14 10:55

@JFinal 还有如果用这个渲染视图是正常的con.render("/front/login.html"); 跳转跳转就出问题

JFinal

2016-12-14 10:59

@qin 基本问题,仔细看手册

绿色的小苹果

2016-12-14 11:48

你这是甭管什么情况都会执行invoke

qin

2016-12-14 12:27

@绿色的小苹果 其实我现在就是要做有些页面不登录可以访问有些必须登陆

绿色的小苹果

2016-12-15 10:46

@qin 在需要登录的页面拦截就OK

bluepig

2016-12-16 10:54

public void intercept(Invocation inv) {
Controller con = inv.getController();
Object obj = con.getSession().getAttribute("uid");
if(obj == null){
if(METHOD.equals(inv.getMethodName())){
inv.invoke();
}else{
try {
con.getResponse().getWriter().write(LOGIN_URL);
con.renderNull();
} catch (IOException e) {
e.printStackTrace();
}
}
}else{
inv.invoke();
}
}

xbb0220

2016-12-20 11:27

跳转后的代码加return;