Struts2对于国际化(i18n)的支持
1,准备资源文件,资源文件的命名格式如下:
baseName_language_country.properties (baseName:资源的基名,需要自定义/language:Java支持的语言/country:Java支持的国家/)
eg: 中国大陆:baseName_zh_CN.properties
美国:baseName_en_US.properties
以下是为应用添加的两个资源文件
第一个存放中文:jxn_zh_CN.properties
内容为:welcom=欢迎来到中国
第二个存放英文:jxn_en_US.properties
内容为:welcome=welcome to America
2,在struts.xml文件中配置全局资源
1,资源文件jxn_zh_CN.properties、jxn_en_US.properties放在WEB-INF/classes目录下,jxn为资源文件的基名
2,struts.custom.i18n.resources常量把资源文件定义为全局资源文件,如下:
<constant name="struts.custom.i18n.resource" value="jxn" />
3,输出国际化信息
1)在jsp页面中使用<s:text name="" />标签输出国际化信息。name为资源文件中的key
2)在Action类中,可以继承ActionSupport,使用getText()方法得到国际化信息,该方法的第一个参数用来指定资源文件中的key
3)在表单标签中,通过key属性指定资源文件中的key,eg:<s:textfield name="" key=""/>
举例说明:
1)输出带占位符的国际化信息:
资源文件中的内容:welcome={0}欢迎来到{1}
jsp页面: <s:text name="welcom">
<s:param>jxn</s:param>
<s:param>中国</s:param>
</s:text>
Action类中:使用getText(String key, String[] args)方法,第二个参数指定了占位符的值
2)jsp页面中直接访问某个资源文件:
Struts2为我们提供了<s:i18n>标签,使用<s:i18n>我们可以在类路径下直接从某个资源文件中获取国际化数据,而无需任何配置。
<s:i18n name="jxn">
<s:text name="welcome" />
</s:i18n>
如果要访问的资源文件在类路径的某个包下,可以这样访问:
访问com.jxn.action包下基名为package的资源文件
<s:i18n name="com/jxn/action/package">
<s:text name="welcome">
<s:param>张三</s:param>
</s:text>
</s:i18n>
4,资源文件的作用范围:全局资源文件、包范围资源文件、Action类的资源文件
注:搜索顺序:Action类的资源文件、包范围资源文件、全局资源文件
1)全局资源文件:放到WEB-INF/classes目录下
2)包范围资源文件:放在某个包下,服务于该包及子包下的Action类。
取名规范:package_language_country.properties
注意:package是固定写法,这里并不是指包名
3)Action类的资源文件:放在与该Action类相同的包中,仅仅服务于该Action类
取名:Action类名_language_country.properties
Struts2对于国际化(i18n)的支持
最新推荐文章于 2022-05-25 11:44:24 发布