国际化拦截器I18nInterceptor不执行

我按jfinal文档上使用jfinal的国际化,发现I18nInterceptor不执行,在controller的action中用Res res = I18n.use("i18n" "zh_CN"); String test=res.get("test");这样可以取到资源中的键值,我自己加入的两个全局拦截器都执行的,但不知道为什么I18nInterceptor不执行,是哪里不对吗?麻烦指点下,谢谢!

评论区

JFinal

2016-12-02 11:25

在此拦截器里面添加一个断点,确保是执行的

JFinal

2016-12-02 11:26

还有一种情况注意一下,如果前方有拦截器在拦截请求以后停止了后续调用,则后续拦截器也不会被执行

Shydow

2017-12-15 16:55

@JFinal 通过断点进去,发现I18nInterceptor执行了,但是在switchView方法中,Render render = c.getRender();获取的render为null,导致国际化模板失败,jfinal用的是2.2,请问可能是什么原因?

JFinal

2017-12-15 16:58

@Shydow 对比一下 jfinal 3.3 的 I18nInterceptor 源代码就知道了,这个代码确实有问题,次序不对,自己建个拦截器,继承一下 I18nInterceptor 拦截器,覆盖一下 intercept 方法,照着 jfinal 3.3 的代码调整一下即可

jf 3.3 的源码在首页的 jfinal-3.3-all.zip 中可以下载到

Shydow

2017-12-15 17:02

逛了逛论坛发现,这是jfinal2.2的一个bug,解决方式见:http://www.jfinal.com/feedback/724

Shydow

2017-12-15 17:30

@JFinal 恩恩,解决了,以后抽空升级到3.3,麻烦詹总啦

热门反馈

扫码入社