4
回答
Jfinal有关render404,render500的处理问题
【寻找人气王】邀新用户免费体验华为云服务,百元话费等你拿!   
请教,Jfinal 在render404, 500 或者其他异常时, 如何处理?是否能终止后续拦截器  以及相关操作的执行
举报
欧少
发帖于6年前 4回/1K+阅
共有4个答案 最后回答: 4年前
个人认为应该终止,因为都已经报错,就没有必要向下执行了,如果后面的代码用到前面的东西就会发生500错误。也可以中庸一点,弄个参数。
JFinal中的Controller中的render404() render500()目前采用方式与其它类型的Render一样。这两种情况我正考虑是否要直接跳出当前正执行的代码,而直接去render。带参的方式实现也是一个办法,但使用抛出异常的方式可能更好些
--- 共有 1 条评论 ---
俸志刚感觉还是之前的方式较好: 1)保持与其他render一致的行为,易于理解; 2)既然是controller中显示调用renderError500,说明代码编写者已经掌控局势,再抛出异常,不合理! 3)不存在需要终止后续代码的需求,其他render会在render后再执行别的代码吗? 6年前 回复
经过慎重考虑,新版本对renderError404 renderError500的工作模式做了改变,当开发者调用renderError404或renderError500时,将跳出当前执行流程,直接render错误页面。目前新版本中的相关代码已经全部更新。敬请关注下一版JFinal  1.0.6
--- 共有 2 条评论 ---
jkluooop我后来是在拦截器里redirect到一个error.jsp输出json错误文本。 controller里用renderText(jsonText),然后ajax返回的时候用eval转了一下文本成json对像。觉得有点绕。 4年前 回复
jkluooop额,看这个,我想起我用jfinal的一个麻烦点。 ajax提交到一个带拦截器的cotroller,通过,执行controller的方法,返回json,不通过验证,需要在拦截器里返回json. 不知道怎么做到。 4年前 回复
http://www.oschina.net/p/jfinal-dreampie   15条    json数据请求时,返回的error信息使用json字符串
public class JsonErrorRenderFactory implements IErrorRenderFactory {
  public Render getRender(int errorCode, String view) {
    if (ThreadLocalUtil.isJson())
      return new JsonErrorRender(errorCode, view);
    else
      return new ErrorRender(errorCode, view);
  }
}




顶部