JFinal+Beetl国际化出错

发布于 2021-11-26 13:40:17 字数 1696 浏览 789 评论 7

@闲.大赋 你好,想跟你请教个问题:

我使用JFinal 2.0+Beetl 2.2.3开发项目,添加了国际化拦截器:

me.addGlobalActionInterceptor(new I18nInterceptor());
页面中,采用如下语法:
${_res['app.name']} // 第一种写法

第一次渲染页面没有问题,但是按F5刷新,就出现问题了:

2015-08-22 09:46:51 ERROR ActionHandler:124: /index
java.lang.NoSuchMethodError: com.jfinal.i18n.Res.get(Ljava/lang/String;)Ljava/lang/Object;
	at com.jfinal.i18n.Res_get.value(Unknown Source)
	at org.beetl.core.engine.VarAttributeNodeListener$VarSquareAttribute2.evaluate(VarAttributeNodeListener.java:224)
	at org.beetl.core.statement.VarRef.evaluate(VarRef.java:127)
	at org.beetl.core.statement.PlaceholderST.execute(PlaceholderST.java:32)
	at org.beetl.core.statement.Program.execute(Program.java:70)
	at org.beetl.core.Template.renderTo(Template.java:137)
	at org.beetl.ext.tag.LayoutTag.render(LayoutTag.java:114)
	at org.beetl.core.statement.TagStatement.runTag(TagStatement.java:108)
	at org.beetl.core.statement.TagStatement.execute(TagStatement.java:87)
	at org.beetl.core.statement.Program.execute(Program.java:70)
	at org.beetl.core.Template.renderTo(Template.java:137)
	at org.beetl.core.Template.renderTo(Template.java:90)
	at org.beetl.ext.web.WebRender.render(WebRender.java:113)
	at org.beetl.ext.jfinal.BeetlRender.render(BeetlRender.java:58)
	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:93)

若修改为直接调用get方法的话,就没有问题,比如这样:

${@_res.get('app.name')} // 第二种写法

我觉得第一种才是合理的,也是我想要的,但是会出问题,该如何破?

(还有其他的方法吗?有的话也请告诉我,谢谢了。)

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

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

发布评论

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

评论(7

乞讨 2021-11-30 18:57:29

用最新版本,2.2.4   ${_res.app.name} 支持,以前版本对jfinal2 的res支持有问题

空城仅有旧梦在 2021-11-30 18:43:47

我在群里也和一些朋友讨论过这个问题,应该需要beetl模板引擎支持get方法才行。另外,${_res.app.name}这样写也是不行,目前我只能直接调用get方法:${@_res.get('app.name')}。

坏尐絯 2021-11-30 18:40:03

回复
beetl 应该提供了 get 方法的扩展的,问下
@闲.大赋

悲喜皆因你 2021-11-30 17:11:00

   让 beetl 支持一下 Res.get(String) 这个方法的 ${_res['app.name']} 即可,beetl 对于读取的支持应该有扩展的接口可用。

   另外,可以试试beetl 之下使用 ${_res.app.name} 这种方式,或许可以。

野心澎湃 2021-11-30 16:56:06

我刚试了下2.2.4,问题已经愉快地解决了,谢谢哈!不过我看发布时间是一个月前,为什么还没有推到中央仓库,我以为2.2.3是最新的版本呢。

嘦怹 2021-11-30 12:08:46

@张露兵 2.2.4 发布出错了,只能下个版本看看能不能发到中央仓库里

吃颗糖壮壮胆 2021-11-27 07:29:31

http://www.oschina.net/news/64401/beetl-2-2-4 这是更新日志。GeneralGet 通常是字符串为参数,但Res的Get方法确实Object,所以我在2.2.4 版本调整了对GeneralGet的处理

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