加入国际化配置:
- 在web.xml文件中加入:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,../struts.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
配置struts.xml的路径,如果struts.xml文件在src根目录下的话,配置节点可省略,自动载入,如果在web-inf目录下就要在后面加入“../struts.xml”的配置 - 在对应的路径中加入struts.xml文件,并加入代码:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="example" extends="struts-default"> <action name="HelloWord" class="web.HelloAction"> <result name="success">/hello.jsp</result> </action> </package> </struts>
- 在src根目录下加入struts.properties运行时配置文件,并在其中加入国际化文件的前缀名配置:
#定义Struts 2的资源文件的baseName是messageResource
struts.custom.i18n.resources=messageResouce
多个文件时用“,”隔开如:
struts.custom.i18n.resources=messageResouce,test,name - 在src根目录下加入国际化支持文件,文件的命名规范为
basenam_语言代码_国家代码(大写).properties
比如:
....i18n....中设置的名字_en_US.properties(英语)
....i18n....中设置的名字_zh_CN.properties(中文) - 在配置文件中加入语言环境的语言,如:
在messageResouce_zh_CN.properties中加入:testkey=欢迎世界
对应的再另一个文件中加入testkey=Hello Word - 在页面中引用方法:
<s:text name="testkey"/> <s:property value="%{getText('testkey')}"/>
运行项目就会得到其配置结果 - 如果要改变访问语言环境可以点击浏览器的“工具——internet选项——常规下的语言按钮”可以添加语言环境或是更改首选语言,更改后刷新页面就变成对应的英语了
很多时候在开发中会遇见与上下文相关的动态的提示信息,可以通过在国际化文件中加入动态配置实现,可以用Struts2中OGNL表达式实现,比如:
在action中
private String msg;
public String testPro(){
ServletActionContext.getRequest().setAttribute("name", "test Properties");
msg = "test message";
return SUCCESS;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
在properties中可以写成
%{#request['name']}/%{#request['msg']} 或者是 %{#request.name}/%{#request.msg}都可以得到,页面显示时即可得到相应的结果