@Jfinal我在拦截器里面使用
if (user == null) {页面可以正常返回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)
或者告诉我一下在拦截器里面会调用什么东西,给个具体的流程(具体到类名到方法名)这样我就有思路自己解决。
这个错误是你默认渲染用了freemarker,而你没有给定freemarker模板路径,或者路径下不存在模板文件造成的,你应该可以ai.getController().renderJson(),ai.getController().renderHtml()之类的改变渲染方式避免吧感谢已经解决。但是我想知道代码执行流程,这样我思路更清楚,能告诉我一下吗?没看错的话应该是缺少return导致代码继续往下执行。直到执行完毕,就会根据对应名字找<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">/admin/core/user/list.html的模板。。解决方法就是在你需要结束的地方加个return回复<aclass='referer'target='_blank'>@bingsdd:你自己设个断点跟进去就清楚了。包都是带源码的。。具体我没仔细了解。但是报这个错就跟struts的一样原理。我想也是这样吧,在执行拦截代码没Return然后会放行直接执行被拦截Action里方法的return,因为没执行方法体内容所以缺少参数导致找不到路径。流程如下:intercepter(noreturn)->actionmethodreturn对吗?
试下renderNull();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。