开发者社区> 问答> 正文

JFinal有没有策略设置多个不同出错页面 400 请求报错 

在JFinal中,可以统一设置出错页面:setError404View("/ui/freemarker/error/404.html");
我现在把移动端站点页面与电脑端站点页面放在了同一个项目下面,有没有什么策略可以根据路径设置不同的出错页面?

展开
收起
kun坤 2020-05-30 15:12:29 505 0
1 条回答
写回答
取消 提交回答
  •    扩展一下 IErrorRenderFactory 接口,在这里可以接管所有 render 异常,然后就可以随心所欲地跳转到任何页面了。在 ErrorRender 中判断一下请求是否来自移动端:

    // 扩展IErrorRenderFactory 接口,接管所有render error异常 public MyErrorRenderFactory implements IErrorRenderFactory { public Render getRender(int errorCode, String view) { return new MyErrorRender(errorCode, view); } }

    // 扩展 ErrorRender,实现 MyErrorRender public class MyErrorRender extends FreemarkerRender { private int errorCode; public MyErrorRender(errorCode, view) { thiw.errorCode = errorCode; super.view = view; } public void render() { // 在此判断一下,如果是移动端请求则切换到别的404页面 if (isMobileRequest(request)) { view = "/path/other_404_view.html" } response.setStatus(errorCode); super.render(); } }

    // 应用自定义的 IErrorRenderFactory public class YourJFinalConfig extends JFinalConfig { public void configConstant(Constants me) { me.setErrorRenderFactor(new MyErrorRenderFactory()); ..... } ...... }

    ######你代码的最后一部分已经有答案,多谢,请忽略我的提问######重写了这个ErrorRenderFactory,是不是要在 configConsotant中,调用setErrorRenderFactory设置一下就能工作了?######mark 这个有用###### 我们 一般都是 nginx 里面 判断一下的 
     这样效率高点

    2020-05-30 15:12:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载