struts资源文件的使用

本文介绍Struts框架中如何利用MessageResources类实现多语言支持和资源文件的管理。通过集中存储标签字符串,简化程序修改过程,并展示了如何配置资源文件及在Action类中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

类MessageResources可以使开发者方便地支持多语言,包括支持多时间格式和数字格式。使用资源包的另一个好处是允许开发者将标签字符串集中存储在一个位置,而不是分散在不同的JSP页面里。例如,对于每个用户的名字的标签"First Name" ,我们可以将它写在资源包中,在适当的地方通过Struts标签简单的进行引用:

<bean:write key="label.first.name"/>

 

这样做将会让你对程序的更改变的简单容易,你不必在每一个JSP页面里更改标签的内容了。


用法

使用消息资源包需要你做下面的事情:

  1. 为你想要支持的地方创建一个消息资源包。
  2. 配置WEB应用,加载消息资源包。
  3. 使用相应的JSP标签加载资源或者...
  4. ...在一个Action类中加载资源。

 

[

返回]

创建资源包

MessageResources 类的默认的实现是一个包含"key=value" 对的文件,下面的一个消息资源包文件的例子。

label.username=Usernamelabel.password=Passwordlabel.first.name=First Namelabel.last.name=Last Namelabel.email=Email Addresslabel.phone.number=Phone Numberlabel.welcome=Welcome back {0} {1}!error.min.length=The input must be at least {0} characters in length.error.max.length=The input cannot be longer than {0} characters in length.

 

大括号包围的整数是对java.text.MessageFormat 类的支持,程序员可以向value字符串中传递参数,对每个value字符串你最多可以传递4个参数。

[

返回]

配置

有两种途径通知Struts你的资源包的位置:web.xml 文件或者struts-config.xml 文件。首先来看web.xml 文件的配置:

<servlet><servlet-name>action</servlet-name><servlet-class>    org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>    application</param-name><param-value>    com.systemmobile.example.ApplicationResources</param-value></init-param></servlet>

这个配置说明你的资源包的名字是ApplicationResources.properties,它位于com.systemmobile.example 包中。后缀".properties" 是隐含的,你不必显式地写出来。如果你还有另一个资源文件在相同的包中,例如ApplicationResources_fr.properties ,用来支持法语,你只需要象上面定义的那样列出文件名字即可。

定义资源文件的第二中方法(上面已经提到),是在struts-config.xml 文件中配置:

<message-resources parameter="com.systemmobile.example.ApplicationResources"/>

属性parameter 是必须的。和在web.xml文件中配置一样, 需要注意的是文件在包中的位置。

使用struts-config.xml 文件来配置消息资源文件是推荐的做法,因为它更有可扩展性,更灵活。

  • 你可以使用message-resources 标签从不同的资源文件取不同的消息,前提是在配置的时候为不同的资源文件给出不同的key 属性的值。例如:
    <message-resources key="myResources" parameter="com.systemmobile.example.ApplicationResources"/><message-resources key="moreResources" parameter="com.systemmobile.example.MoreApplicationResources"/>
    然后你必须这样使用bean:message 标签:
    <bean:message bundle="moreResources" key="some.message.key"/>
  • 设置属性null 的值为"false" 后,如果某个资源字符串不存在将返回???key??? 而不是仅仅显示null。这样很容易在JSP页面中看到你没有定义的资源,使得内部测试的速度更快。(关于如何从资源文件中获得消息的详细内容参见
  • 另外,message-resources 标签允许你使用自己实现的MessageResourcesFactory 接口,这不在本文的讨论范围。
国际化 一节)
<message-resources parameter="com.systemmobile.example.ApplicationResources" null="false"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值