通过freemarker指令,实现js文件的国际化,可在js中写表达式
今日有了国际化的需求,以前处理国际化时,对于javascript资源中的国际化问题,一直是个头疼的问题,我们一起来探讨一下,如何使用freemarker实现js文件的国际化。
实现原理:
- 我们将JS文件做为模板,通过freemarker对其进行格式化。
- 扩展freemarker指令,定义资源指令。
- 前台JSP的tag库。
准备工作:
- 定义我们自己的jsp标签 : <p:script src=”test.js”/>,标签内容: 指定js文件路径,标签内部从request中取locale信息,通过freemarker取到test.js这一模板(我将我的js文件都放到了/scripts目录下),将locale信息作为变量放到模板中,进行格式化。然后写到应用某一目录中,最终我们的<p:script src=”test.js”/>标签,输出内容为:<script type=”text/javascript” src=”/scripts_bin/zh/test.js”>,p:script先通过当前locale和src属性,判断是否格式化之后的js文件存在,例如/scripts_bin/zh/test.js文件不存在,则调用模板输出,存在的话,直接返回URL,
- 问题:开发过程中的问题,上面的描述,貌似我们的JS每次都被格式化,然后存储到另一个目录中,而且下次就不会对那么目录进行重新,当然我们可以通过配置解决此问题,我给系统加入了resource.cache_script配置,如果设为false,则每次都会进行重写。
方案总结: 首先我们将JS文件视为模板,然后封装我们自己的指令,对JS中的表达式进行替换,存放到应用的某一目录下,通过JSP标签,输出不同语言目录下的JS文件。
相关推荐
80183053 2013-09-12
chenshuixian 2013-06-01
羽化大刀Chrome 2013-05-31
quanhaoH 2013-06-17
gxyblue 2013-05-11
ChinaWin 2020-08-13
kangtingting0 2020-05-20
MichelinMessi 2020-02-19
nicepainkiller 2020-01-25
浪风一骑 2013-08-04
wutongyuq 2013-04-12
graseed 2020-10-28
SXIAOYI 2020-09-16
jinhao 2020-09-07
yoohsummer 2020-06-01
impress 2020-02-20
kanpiaoxue 2013-06-19
大数据杂谈 2020-09-26
王国平 2020-06-20
lizhenmxcz 2013-05-12
kidneybeans 2013-06-17
vanturman 2013-06-05
稻草人的高粱地 2014-07-02