struts2框架学习之国际化资源

1、资源文件命名

国际化资源文件命名格式如下:
basename_language_country.properties
basename_language.properties
basename.properties
其中basename为资源文件的基本名称,language和country必须是java支持的语言和国家。获取java支持的语言和国家代码如下:

Locale[] locales = Locale.getAvailableLocales();
        for(Locale locale:locales){
            System.out.println("country:" + locale.getCountry() + ",language:" + locale.getLanguage());
        }
2、资源文件的配置和获取

新建资源文件,在中文环境下,资源文件中的value值需要进行ascii转换,可以通过运行后输入native2ascii进行转换,另外本文中使用了eclipse的属性文件插件,因此直接显示为中文。属性文件配置如下:
info_en_US.properties

username=zhangsan

info_zh_CN.properties

username=张三

info_zh.properties

username=李四
password=lisi

info.properties

username=王五
password=wangwu
email=邮箱

另外,如果需要读取到属性文件中的值,需要在struts-config.xml文件中配置常量。

<!-- 使用资源文件名称 ,其中value值代表资源文件的baseName-->
    <constant name="struts.custom.i18n.resources" value="info"></constant>

页面获取资源文件的方式为通过struts标签<s:text/>,如下所示:

    <!-- 资源文件获取key值 -->
    <s:text name="username"/>
    <s:text name="password"/>
    <s:text name="email"/>

另外,如果在form表单中获取key值,方式如下:

<!--其中key值为资源文件中的key值,作用是为输入框添加label名称,和label的属性值一样。但是在常量中会导致key值不能够从属性文件获取对应的value-->
<s:textfield name="login.username" key="username"></s:textfield>

另请注意在常量<constant name="struts.ui.theme" value="simple"/>使用时会导致<s:textfield/>中的key值不能够从属性文件获取对应的value。
最后页面显示结果如下:
这里写图片描述
从以上的配置文件中可以看出这三个值的取值来源,由此可以看出,资源文件的搜索顺序如下:
先从basename_language_country.properties中寻找相关的key值,没有则寻找basename_language.properties中寻找相关的key值,没有则到basename.properties中寻找相关的key值,没有则显示为name的值。

3、属性文件中占位符的使用

属性文件配置内容如下:

username=张三,{0},{1}

在jsp中使用标签<s:param>值</s:param>进行参数的传递。

<s:text name="username">
    <s:param>你好</s:param>
    <s:param>欢迎你!</s:param>
</s:text>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值