struts2框架学习之国际化资源 (续)

1、action中应用资源文件

在action中使用资源文件,需要继承ActionSupport类,ActionSupport类实现了TextProvider, LocaleProvider这两个接口,其中TextProvider提供了获取资源文件值的方法getText()方法,而LocaleProvider接口只有一个getLocale()方法,用来获取Locale。
修改配置文件info_zh_CN.properties:

username=张三,{0},{1}
usernameError=用户名称不能为空!请确认!

在action中,获取属性文件方法如下:

this.getText("usernameError");

在action中使用占位符进行操作,代码如下:

this.getText("username", new String[]{"你好","欢迎你"});
2、包范围的资源文件

处于该包以及子包下的action都能访问到该资源文件,放置位置为某个包下面,命名格式为:package_language_country.properties。其中package为固定格式。配置文件package_zh_CN.properties如下:

username=包范围下的username

在包下面的action中可以使用getText(“username”)的方式获取。

3、action范围的资源文件

可以为某个单独的action指定一个属性文件,放置位置为某个action同级目录下。命名格式为ActionName_language_country.properties。
配置action范围的属性文件:

username=action范围内的username

action中同样使用getText(“username”)方法进行获取值。

4、资源文件的加载顺序

对于action的使用getText(key)值来说,当同时存在action范围内的属性文件、包范围内的属性文件和全局属性文件时,加载顺序如下:
首先,在指定action内的属性文件是否存在key值,如果存在,则取值,如果不存在,则查找当前action上一级包中是否存在指定key值的包范围属性文件,不存在则继续上一级包中寻找,如果一直没有找到,则在全局的属性文件中寻找是否存在指定key值。如果存在指定的key值,则取出key值对应的value值,如果不存在,则默认为key值。
另外,当全局属性文件,有多个资源文件时,需要按照basename_language_country、basename_language、basename的顺序进行寻找。

页面获取资源文件

1、使用<s:i18n/>访问某个资源文件。
代码如下:

    <!-- 使用i18n标签获取属性文件 -->
    <!-- 获取包范围下的资源文件 -->
    <s:i18n name="com/struts/package">
        <s:text name="username"></s:text>
    </s:i18n>
    <!-- 获取action范围下的资源文件 -->
    <s:i18n name="com/struts/service/LoginService">
        <s:text name="username"></s:text>
    </s:i18n>

2、<fmt/>的使用
JSTL中包含了国际化和格式化标签,使用国际化标签可以让一个jsp页面可以根据访问者所在的区域输出不同语言的页面表述。在此需要使用Maven添加依赖jar包。配置文件如下:

 <!-- 引入jstl标签库 -->
    <dependency>
        <groupId>jstl</groupId> 
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

在jsp页面使用fmt标签,应用代码如下:

<!-- 使用jstl标签fmt -->
    <!-- 设置语言环境,会覆盖客户端传递的怨言 -->
    <fmt:setLocale value="zh_CN" scope="request"/>
    <!-- 装载一个资源集,并保存在EL变量中 ,basename为基本名称,如果为包范围下则为com.struts.package,action范围下为com.struts.service.LoginService-->
    <fmt:setBundle basename="info" scope="request" var="baseName"/>
    <fmt:message key="username" bundle="${baseName }">
        <!-- 占位符的传递参数 -->
        <fmt:param value="您好"/>
        <fmt:param value="欢迎"/>
    </fmt:message><br/>
    <!--fmt:bundle 设置一个只在标签体内的访问的资源集  -->
    <!-- package范围下的资源文件 -->
    <fmt:bundle basename="com.struts.package">
        <fmt:message key="username"/>
    </fmt:bundle>
    <!-- action范围下的资源文件 -->
    <fmt:bundle basename="com.struts.service.LoginService">
        <fmt:message key="username"/>
    </fmt:bundle>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值