JFinal有没有策略设置多个不同出错页面

发布于 2021-11-30 13:17:11 字数 142 浏览 856 评论 5

在JFinal中,可以统一设置出错页面:setError404View("/ui/freemarker/error/404.html");

我现在把移动端站点页面与电脑端站点页面放在了同一个项目下面,有没有什么策略可以根据路径设置不同的出错页面?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

墨洒年华 2021-12-01 18:10:44

我们 一般都是 nginx 里面 判断一下的 

 这样效率高点

南汐寒笙箫 2021-12-01 18:09:05

mark 这个有用

卸妝后依然美 2021-12-01 14:53:17

重写了这个ErrorRenderFactory,是不是要在 configConsotant中,调用setErrorRenderFactory设置一下就能工作了?

成熟稳重的好男人 2021-12-01 05:01:03

你代码的最后一部分已经有答案,多谢,请忽略我的提问

梅窗月明清似水 2021-11-30 18:08:33

   扩展一下 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());
   .....
  }
  ......
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文