博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JFinal 2.2 国际化功能的应用
阅读量:7019 次
发布时间:2019-06-28

本文共 1444 字,大约阅读时间需要 4 分钟。

hot3.png

听说JFinal更新到2.2后,功能更强大了,所以马上拿来试试。之前一直对国际化挺好奇的,但是项目中缺很少机会用到,所以就打算试试。结果遇到了以下问题:

在 的指导下,自己重新实现了一个I81n的拦截器:

public class MyI18nInterceptor extends I18nInterceptor{	private static String defaultLocale = Locale.getDefault().getLanguage() + "_" + Locale.getDefault().getCountry();		public void intercept(Invocation inv) {		Controller c = inv.getController();		String localeParaName = getLocaleParaName();		String locale = c.getPara(localeParaName);				if (StrKit.notBlank(locale)) {			c.setCookie(localeParaName, locale, Const.DEFAULT_I18N_MAX_AGE_OF_COOKIE);		}		else {			locale = c.getCookie(localeParaName);			if (StrKit.isBlank(locale))				locale = defaultLocale;		}		Res res = I18n.use(getBaseName(), locale);		c.setAttr(getResName(), res);				inv.invoke();//执行相应的action				SearchService page = c.getAttr("resultPage");		if(null != page)		{			String paginate = res.format("Pageinate",page.getPageNumber(),page.getTotalPage());			c.setAttr("pageMsg",paginate);		}	}}

这里跟原来提供的区别就是,我的实现还是通过选择properties文件来变更页面的语言,而原来是通过改变资源文件的路径,即变更html文件来实现变更页面的语言,但是原来的实现存在以下问题:

if (isSwitchView) {	switchView(locale, c);}else {	Res res = I18n.use(getBaseName(), locale);	c.setAttr(getResName(), res);}inv.invoke();

由于没有执行inv.invoke(),Controller中的render的值仍然为空,所以执行switchView时没有效果;

我的实现,有一个好处就是,如果有些值需要在执行完action之后格式化输出,那就在inv.invoke( )后获取相应的值,然后进行格式化后再配置到Controller的Attrs中,这样在Controller中的action中,代码就更加简洁了。

希望对大家有所帮助~

转载于:https://my.oschina.net/u/1793377/blog/654594

你可能感兴趣的文章
6.简单提取小红书app数据保存txt-2
查看>>
REST FUL架构读后感
查看>>
fushioncharts 使用教程要点---使用JSON数据方式
查看>>
阿里云建站流程
查看>>
NSDateFormatter相关整理
查看>>
Sencha 中文站
查看>>
Cygwin下软件安装 - apt-cyg
查看>>
当安装mongodb客户端出现了Failed to load list of databases
查看>>
python基础--内置函数filter,reduce
查看>>
C 学习笔记
查看>>
20165324 Java实验三 敏捷开发与XP实验
查看>>
hdu 4812 DTree (点分治)
查看>>
2015 多校联赛 ——HDU5289(二分+ST)
查看>>
数据结构与算法-链表
查看>>
Socket原理解析2
查看>>
redis数据过期策略【转】
查看>>
网络流24题-方格取数
查看>>
线代之计算特征值与特征向量
查看>>
uvm_hdl——DPI在UVM中的实现(四)
查看>>
as和handle交互(json)
查看>>