ApplicationContext继承了org.springframework.context.MessageResource接口,您可以使用getMessage()的各个签署方法来取得讯息资源,从而实现国际化讯息的目的。
在这个主题中,我们简单的透过MessageResource的一个实作org.springframework.context.support.ResourceBundleMessageSource来取得国际化讯息,首先在Bean定义档中撰写:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>messages</value>
</property>
</bean>
</beans>
basename属性用来设定讯息资源的前置文件名称,在这边设定是messages,则讯息资源文件的名称可以是 messages_en_US.properties、messages_zh_TW.properties、 messages_*.properties等等名称,在这边我们提供两个:messages_en_US.properties、 messages_zh_TW.properties,首先messages_en_US.properties内容如下:
userlogin=User {0} login at {1}
message_zh_TW.properties内容如下:
userlogin=使用者 {0} 于 {1} 登入
其中{0}与{1}是我们可以在程序执行过程中设定的参数。Spring实际上会使用JDK的ResourceBundle来读取这些文件,而中文在编码 过程中会发生问题,为了要能正确的显示中文,我们必须对message_zh_TW.properties进行编码转换,使用JDK工具中的 native2ascii即可:
native2ascii message_zh_TW.properties message_zh_TW.txt
之后将message_zh_TW.txt覆盖(替换)掉message_zh_TW.properties就可以了。
接下来撰写一个简单的测试程序:
package onlyfun.caterpillar;
import java.util.*;
import org.springframework.context.*;
import org.springframework.context.support.*;
public class Test {
public static void main(String[] args) throws Exception {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Object[] arguments = new Object[] {"良葛格", Calendar.getInstance().getTime()};
System.out.println(context.getMessage("userlogin", arguments, Locale.US));
System.out.println(context.getMessage("userlogin", arguments, Locale.TAIWAN));
}
}
ClassPathXmlApplicationContext实作了ApplicationContext接口,我们使用其来读取Bean定义档,并返 回一个ApplicationContext接口的实例,透过设定参数并指定Locale,我们使用getMessage()设定对应的讯息,这个测试程式结果会显示以下的内容:
log4j:WARN No appenders could be found for logger (org.springframework.beans.factory.xml.XmlBeanDefinitionReader).
log4j:WARN Please initialize the log4j system properly.
User 良葛格 login at 10/28/04 12:52 PM
使用者 良葛格 于 2004/10/28 下午 12:52 登入
相关推荐
这个实现类应该扩展Struts的`MessageResources`接口,并重写其核心方法,如`getString()`和`getBundle()`。在这些方法中,可以使用JDBC或其他ORM框架(如Hibernate或MyBatis)来查询数据库,查找对应的消息资源。 ...
#### MessageResource接口 - **定义**:用于国际化消息处理的接口。 - **功能**:提供消息获取、格式化等功能,支持多语言的消息显示。 - **示例**:定义一个包含不同语言版本消息的properties文件,并通过`...
<s:i18n name="messageResource"> <s:text name="label.helloWorld"></s:text> 指定在从messageResource取资源 4) 读取参数变量 <s:param>Jia Xiaoyuan 使用带参数的资源,可以替换label.hello=hello {0}中的...
1.ApplicationContext接口继承了MessageResource接口,因此使用ApplicationContext作为spring容器可以使用国际化资源文件。 2.在MessageResource接口中定义了两个主要用于国际化的方法: String getMessage(String ...
为了支持多语言的应用程序,Spring提供了一个MessageResource接口,用于处理消息资源文件。 #### 十四、资源文件的获取 在Spring中,可以通过特定的API来访问外部资源文件,如属性文件等。 #### 十五、Aware相关...
- `messageResource.properties`: 默认配置文件,当找不到特定语言配置文件时使用。 - **配置文件示例**: ```properties # messageResource_zh_CN.properties loginPage=欢迎页面 ``` ```properties # ...
│ messageResource_zh_CN.properties │ spring.xml │ struts.xml │ ├─28个java常用的工具类 │ │ Base64.java │ │ Base64DecodingException.java │ │ CConst.java │ │ CharTools.java │ │ ...
ResourceBundle bundle = ResourceBundle.getBundle("messageResource", Locale.CHINA); String welcomeMessage = bundle.getString("welcome_message"); ``` 总结起来,J2EE资源文件和log4j通用配置对于构建健壮、...
struts.custom.i18n.resources=messageResource ``` 或者在`struts.xml`配置文件中添加: ```xml <constant name="struts.custom.i18n.resources" value="messageResource"/> ``` 这里的`messageResource`是你定义的...
例如,中文资源文件命名为`messageResource_zh_CN.properties`。 - **配置示例**: ```properties # messageResource_zh_CN.properties loginPage=欢迎登录 ``` - **使用方式**: - **页面中**:使用`...
<constant name="struts.custom.i18n.resource" value="MessageResource" /> ``` 或者更改提交的后缀名: ```xml <!-- 在struts.xml中 --> ``` 4. **包配置**:Struts2使用包来管理Action和拦截器。包的...
- **默认配置**:如果没有找到匹配的语言版本,系统会回退到默认配置文件`messageResource.properties`。 - **使用国际化**: - **页面使用**:`<s:text name="loginPage"/>` - **Action中使用**:`getText(...
`MessageResource`类用于构建本地化消息模板,实现JSF应用的国际化和本地化功能。 总的来说,JSF提供了一个强大的框架,通过组件、上下文、生命周期管理和事件处理机制,简化了Web应用程序的开发。理解这些基本...
在实际开发中,Action类需要实现Struts2提供的接口,如`ActionSupport`,并覆盖其中的方法,比如`execute()`,在这里完成登录检查。同时,OGNL用于在JSP页面和Action之间传递数据,例如在JSP中显示或接收表单数据。 ...
- 使用 `<message-resources parameter="messageresource">` 加载资源文件。 - 通过 `<bean:message key="user.username">` 获取资源文件中的文本。 - 支持动态切换语言环境,如:`request.getSession()....
代码挑战 ... 生成带有标题 Content-Type: application/json 和 JSON 负载的响应: { " message " : { " content " : ...它必须有一个包含 REST API 定义的类MessageResource和一个执行逻辑的MessageService类。 它必须
: { " content " : " Hello $name " }} 此外,该服务必须满足以下要求: 代码必须存储在 github 上并位于此存储库的分支中代码必须用java编写Maven用于构建项目并生成war文件Jetty 用作 Web 服务器REST 接口由 ...
这里定义了资源文件的`basename`为`messageResource`,意味着Struts2会在`WEB-INF/classes`目录下查找以`messageResource`为前缀的资源文件。如果资源文件位于子目录下,还需要在配置中明确指出子目录路径。 #### ...
- 资源文件通常命名为`messageResource.properties`(默认英语),并为其他语言创建类似`messageResource_zh_CN.properties`(中文)的文件。 - 使用`native2ascii`工具处理中文字符,确保编码正确。 - 在Action...