问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

struts2国际化在js里面怎么使用

发布网友 发布时间:2022-04-23 00:27

我来回答

1个回答

热心网友 时间:2022-04-23 01:56

一、struts2国际化比较简单,过程如下:
1. 建立资源文件
中文资源:language_zh_CN.properties (language-自定义名称,zh-中文,CN-中国)
英文资源:language_en_US.properties (language保持一致,en-英文,US-美国)
其内容就是键值对,俩资源文件的键名对应保持一致,值分别对应中文与英文
其中中文在MyEclipse环境下,用Properties进行编辑,直接输入中文
如:password 密码
那么从Source看时,就可看到中文是用Unicode表示的
如:password=\u5BC6\u7801

2. 配置
struts.xml文件中,配置i18n的源,值取资源文件的自定义名称部分(如果资源文件不是在src下,记得加上包路径):
<constant name="struts.custom.i18n.resources" value="language"></constant>
web.xml文件中,配置Struts2:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3. jsp中使用资源
加入标签引用:<%@ taglib prefix="s" uri="/struts-tags" %>
s:text标签用健名取资源值:<s:text name="password"/>
或者表单元素用:key="password"

4. 在action中使用资源
用ActionSupport类中的方法取资源值:getText("password");

二、js中要获取以上的资源值,就比较麻烦了
单独建立一套资源的话,就需要维护两套资源,重复且维护麻烦

1. js中使用量较少时,可在jsp页面中定义变量先取出资源值
用js代码如:var curPassword='<s:text name="password"/>';
或:var curLang = {
password : '<s:text name="password"/>',
user : '<s:text name="user"/>'
}
那单独的js文件中就可直接使用了

2. 另外想到的是从Java资源中全部取出,在js中再建立一个语言的对象
struts国际化,是建立在java国际化之上,做了一次封装
java国际化,用到的有两个类:Locale、ResourceBundle
Locale是语言类,选定当前的语言与地域,如:Locale locale = new Locale("zh","CN");
ResourceBundle是资源类,加载的是资源
如:ResourceBundle bundle = new ResourceBundle.getBundle("language",locale);
有个方法可取键值:bundle.getString("password");
找到一个方法可取全部键名:Set<String> keys=bundle.keySet();

好,再看Struts2中如何取ResourceBundle对象:
ActionSupport类中方法:ResourceBundle bundle=getTexts("langauge");
Action中添加方法:
protected String getCurLang(String resourceName){
ResourceBundle bundle=getTexts(resourceName);
if(null != bundle){
Set<String> keys=bundle.keySet();
Iterator<String> it = keys.iterator();
StringBuffer curLang = new StringBuffer();
curLang.append("{");
int id=0;
String key;
while(it.hasNext()){
key=it.next();
if(id>0){
curLang.append(",");
}
curLang.append(key);
curLang.append(":\'");
curLang.append(getText(key));
curLang.append("\'");
id++;
}
curLang.append("}");
return curLang.toString();
}
return "";
}

然后放入session中:session.setAttribute("curLang",getCurLang("langauge"));
或前台调用Ajex通讯取得

最后,前台把它转为对象,如:
var strvar curLang="<%=session.getAttribute("curLang")%>";
那么js文件中就可直接使用了:curLang["password"];
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
sometimesome timesometimessome times的区别 瓜地的午餐怎么造句 夏季宝宝不吃饭应该怎么办 狼人杀里面的白狼王模式怎么玩? 狼人杀白狼王和骑士:操作至上的高效玩法指南 狼人杀手游白狼王怎么玩 详细玩法攻略 狼人杀 狼人杀的白狼王怎么玩? 国产轮毂品牌有哪些 国产轮毂品牌哪个品牌好 国内轮毂有哪些品牌 岗位和职务怎么填 事业单位养老保险个人交480元是什么标准 汽车暖风不热,但是暖风水箱进出管都很热是怎么回事? 软件可以合成麦兜或者蜡笔小新或者阿木木的声音吗?用什么软件呢? 事业单位个人养老保险缴费标准 求一个发展自己优势智能的方案 智能手机的优势是什么 分析自己的优势智能是什么制定出发挥优势智能在职业生涯发展中的作用的方案 父母如何发现孩子的优势智能? 分析一下自己的强势智能是什么,思考一下怎样发挥强势 优势智能是什么 分析自己的优势智能是什么制定出发挥优势智能在职业生涯发展中的作用的方案_百度问一问 天然气管道人工水钻怎么打? 为什么影视大全老是打不开 影视大全有wifi也打不开 电脑音箱怎么突然没声音了??? 圆方软件如何设计双层床 长13米宽10米两层楼房设计图,简单大空间设计,不在乎房间多少, 为什么我的电脑音箱突然没声音了 应该是哪里的事呢 复式房遇冷的原因是什么?为何现在大家都不选择复式?都有哪些优缺点? 怎么设计既解决空间小桌椅难两全的问题又能解决空间里杂物摆放呢? 超人的名字有哪些? 缅甸my tel话费怎样转移 收玉米的季节发朋友圈 Mpt缅甸卡怎么转话费 超人有几个人主演过?最经典的有哪几部?钢铁之躯 超人大战蝙蝠侠超人演员 超人有几个人主演过?最经典的有哪几部? 淘宝可以充缅甸话费么? 中国电话到缅甸几个月后为什么会停机一直都在交话费啊? 缅甸卡话费变成流量怎么弄 好吃的酸豆角,从腌制到炒制,全程步骤清楚明了,成品金黄可见 有一款手机 头是尖的 后面摄像头挺大一个圈 大小跟iPhone5差不多 请问是什么手机 谢谢 vivo x9开机上面就有图标一直尖头上下是系统更新,但是怎么点都是点了下载马上就是暂停了! 最近出来一款手机上面呈三角形是什么牌子手机,我在美颜相机封面看到的? u盘双击无法打开,右击也无法打开,请问如何解决? 修复U盘不能右键弹出 U盘无法打开,右击出现AUTO !!! 咏牛的十首诗词有哪些? 有关咏牛的古诗 怎样分析培养基配方