@Jfinal我在拦截器里面使用
if (user == null) {if(url.equals("/admin/")){
controller.redirect("/admin/login/");
}else{
response.getWriter().print(JSON.toJSONString(new MessageJson("301", "登录已超时")));
}
} else {
if(user.getIsAdmin()==1){
ai.invoke();
}
boolean r = ResourceService.impl.getAllUrl().contains(url);
if (r) {
boolean b = AdminService.impl.getAuth(user.getUserId(), url);
if (b) {
ai.invoke();
} else {
response.getWriter().print(JSON.toJSONString(new MessageJson("403", "没有权限")));
}
} else {
ai.invoke();
}
}
页面可以正常返回JSON或者跳转页面,问题关键在使用
response.getWriter().print(JSON.toJSONString(new MessageJson("301", "登录已超时")));因为我使用了freemarker,导致 RenderException,因为我只是返回字符串JSON并不需要指定html路径,所以这个异常有点莫不着头脑,以前在显示层直接使用renderText(JSON.toJSONString(new MessageJson("0","验证码错误"))); 后台是不会报错的。但是在拦截器里面就不知道怎么解决这个异常了。希望@Jfinal能解决这个问题。并且我没有指定/admin/core/user/list.html路径不知道从哪里获取的。查看了一下源码好象这个需要给Render对象赋值才没有错,采用 response.getWriter().print返回字符串就会错。后台出错如下:
EVERE: /admin/core/user/list?_=1381156947919
com.jfinal.render.RenderException: java.io.FileNotFoundException: Template /admin/core/user/list.html not found.
at com.jfinal.render.FreeMarkerRender.render(FreeMarkerRender.java:128)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:92)
或者告诉我一下在拦截器里面会调用什么东西,给个具体的流程(具体到类名到方法名)这样我就有思路自己解决。
试下 renderNull();