在JFinal中,可以统一设置出错页面:setError404View("/ui/freemarker/error/404.html");
我现在把移动端站点页面与电脑端站点页面放在了同一个项目下面,有没有什么策略可以根据路径设置不同的出错页面?
扩展一下 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 里面 判断一下的
这样效率高点
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。