您现在的位置:首页 >> 前端 >> 内容

Struts开发教程之动态访问国际化资源(国家/语言切换)

时间:2017/12/6 11:22:07 点击:

  核心提示:Struts开发教程之动态访问国际化资源(国家/语言切换)。要修改国家/语言其根本就是要修改请求中的request_locale属性值!!!目的:为动态地访问国际化资源文件,实现让用户自行选择语言的功...

Struts开发教程之动态访问国际化资源(国家/语言切换)。要修改国家/语言其根本就是要修改请求中的request_locale属性值!!!

目的:为动态地访问国际化资源文件,实现让用户自行选择语言的功能,只需要提供一个下拉列表框,在下拉列表框中列出本应用所支持的各种语言并且,当用户选择下拉列表中的某个选项时,系统将该下拉列表项的值设置为request_locale参数提交(select的name属性设置为request_locale)。

为此,可以将系统中支持的语言放在一个Map中,通过jsp页面中迭代该map对象,就可以在页面上列出应用所支持的全部语言。

案例:用户可自由切换语言。

登录界面i18n.jsp:

[html] view plain copy print?

<%@pagelanguage=“java”import=“java.util.*”pageEncoding=“utf-8”%>

<%@taglibprefix=“s”uri=“/struts-tags”%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;

%>

”>

name=“request_locale”onchange=“changeLocale()”>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix = "s" uri = "/struts-tags" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

Action:(testI18n.java)

[java] view plain copy print?

packagecom.action;

importjava.util.HashMap;

importjava.util.Locale;

importjava.util.Map;

importjava.util.ResourceBundle;

importcom.opensymphony.xwork2.ActionContext;

importcom.opensymphony.xwork2.ActionSupport;

publicclasstestI18nextendsActionSupport{

privateLocalelocale;

publicLocalegetLocale(){

returnlocale;

}

publicvoidsetLocale(Localelocale){

this.locale=locale;

getLocales();

}

publicvoidgetLocales(){//关键代码

Mapmap=newHashMap(2);

if(locale==null){//防止为空的情况!

locale=Locale.getDefault();

}

ResourceBundleresourceBundle=ResourceBundle.getBundle(”globalMessage”,locale);

map.put(resourceBundle.getString(”huizhi.en”),Locale.US);

map.put(resourceBundle.getString(”huizhi.cn”),Locale.CHINA);

ActionContext.getContext().getSession().put(”map”,map);//保存到session范围内

}

publicStringexecute(){

returnSUCCESS;

}

}

国际化资源文件:globalMessage_zh_CN.properties[html] view plain copy print?

loginUser=\u7528\u6237\u540D

loginPassword=\u7528\u6237\u5BC6\u7801

loginSubmit=\u63D0\u4EA4

language=\u9009\u62E9\u8BED\u8A00

huizhi.en=\u7F8E\u56FD\u82F1\u8BED

huizhi.cn=\u7B80\u4F53\u4E2D\u6587

loginUser = \u7528\u6237\u540D

loginPassword = \u7528\u6237\u5BC6\u7801

loginSubmit = \u63D0\u4EA4

language = \u9009\u62E9\u8BED\u8A00

huizhi.en = \u7F8E\u56FD\u82F1\u8BED

huizhi.cn = \u7B80\u4F53\u4E2D\u6587

globalMessage_en_US.propreties [html] view plain copy print?

loginUser=LoginUser

loginPassword=LoginPassword

loginSubmit=Submit

language=selectlanguage

huizhi.en=AmericanEnglish

huizhi.cn=SimplifiedChinese

loginUser = LoginUser

loginPassword = LoginPassword

loginSubmit =Submit

language = select language

huizhi.en = American English

huizhi.cn = Simplified Chinese

Action(LoginAction)

[java] view plain copy print?

packagecom.action;

importcom.opensymphony.xwork2.ActionContext;

importcom.opensymphony.xwork2.ActionSupport;

publicclassLoginActionextendsActionSupport{

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicStringexecute(){

returnSUCCESS;

}

}

struts.xml配置:[html] view plain copy print?

”-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1.7//EN”

“https://struts.apache.org/dtds/struts-2.1.7.dtd”>

/welcome.jsp

/index.jsp

/i18n.jsp

/welcome.jsp

/index.jsp

/i18n.jsp

完成效果:

 

Struts开发教程之动态访问国际化资源(国家/语言切换)

 

 

Struts开发教程之动态访问国际化资源(国家/语言切换)

 

有一点小问题就是当进行语言切换的时候,提交按钮的值value=”“,如上图所示,不知原因。

Tags:ST TR RU UT 
作者:网络 来源:yiguang_82