回顾一下国际化的大概流程:client:IE/FF向服务器发送请求的同时,在html协议里的header里有accept-language字段,服务器接收后,把消息传递给Struts,Struts根据浏览器的发送过来的支持语言种类里选择对应的ApplicationResources_XX_XX_XX.properties。如果Struts里没有配置了对应的properties文件的话就采用默认的properties文件。在properties文件里的书写方式是如:error.username.null=username required!一行一对'键值对'。等号前面是key,等号后面是value。有了这个便于coder书写消息的规定之后,Struts对properties文件的解析就方便多了。下面来看看Struts是怎么取得Message的:
org.apache.struts.util.MessageResources里的getMessage方法
public String getMessage(Locale locale, String key, Object[] args) {
// Cache MessageFormat instances as they are accessed
if (locale == null) {
//源文件289行:protected Locale defaultLocale = Locale.getDefault();
locale = defaultLocale};
}
/*
源文件460到462中定义的方法体:
protected String messageKey(Locale locale, String key) {
return (localeKey(locale) + "." + key);
}
*/
MessageFormat format = null;
String formatKey = messageKey(locale, key);
synchronized (formats) {
// 86行定义了用于存放国际化消息的哈希表:protected HashMap formats = new HashMap();
format = (MessageFormat) formats.get(formatKey);
if (format == null) {
String formatString = getMessage(locale, key);
if (formatString == null) {
return returnNull ? null : ("???" + formatKey + "???");
}
format = new MessageFormat(escape(formatString));
format.setLocale(locale);
formats.put(formatKey, format);
}
}
return format.format(args);
}
大概说一下里面的处理流程把:在MessageResources类里,把properties解析后的'键值对'放在一个HashMap里,取出的时候,根据key来取。如果有复合消息文本的话就先对其'格式化'了在输出!
以上纯粹个人理解,谁看到错误了请不吝指正。共同进步!
分享到:
相关推荐
以下是关于Struts1.x国际化的一些核心知识点: 1. **资源包(Resource Bundle)**: - 在Java中,资源包是包含本地化字符串和其他可配置资源的文件。对于Struts1,这些通常以`.properties`格式存储,例如`messages...
- **Struts2.x** 配置文件较少,主要为struts.xml,支持注解配置,减少XML配置的繁琐。 8. **插件与扩展性**: - **Struts1.x** 插件较少,扩展性相对较弱。 - **Struts2.x** 有丰富的插件系统,如Ajax、...
6. **国际化与本地化**:Struts1.x支持多语言环境,通过Resource Bundle管理和message.properties文件实现动态加载不同语言的文本资源,提供本地化服务。 7. **Tiles框架**:Tiles是Struts1.x的一个插件,用于构建...
在Struts1.x中,Action是核心组件之一,它必须继承自org.apache.struts.action.Action类,并且需要覆盖execute方法。Action对象由框架创建和管理,每一个HTTP请求都对应一个Action实例。然而,在Struts2.x中,Action...
源码层面,开发者可能需要查看Struts1.x的源代码来理解其内部如何处理国际化请求,而工具则强调了使用jinto等辅助工具在实际开发中的重要性。 在实际项目中,除了基本的国际化设置外,还需要考虑时间日期格式、数字...
2. **ActionServlet**:Struts1.x 的核心组件,负责初始化框架、接收 HTTP 请求并将请求分发给相应的 Action 类处理。 3. **ActionMapping**:配置文件 struts-config.xml 中定义的一个节点,用于描述一个 Action ...
8. **国际化与本地化**:Struts1.x支持多语言,通过资源包(properties文件)来实现。你可以为不同的语言创建不同的资源配置文件,Struts会根据用户的浏览器设置自动选择。 9. **异常处理**:Struts1.x提供了异常...
7. **国际化和本地化**:Struts 1.x 支持多语言和文化环境,通过Resource Bundles管理不同地区的文本资源,方便实现国际化。 8. **异常处理**:通过配置全局异常处理,Struts 1.x 可以捕获并处理应用程序中抛出的...
Struts1.x是一个经典的Java Web框架,它在20世纪末至21世纪初被广泛使用,用于构建基于MVC(Model-View-Controller)架构的Web应用。本示例将探讨如何使用Struts1.x实现一个简单的登录功能。首先,我们需要理解...
Struts1.x是一个经典的Java Web开发框架,它遵循Model-View-Controller(MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用程序。在这个"Struts1.x_Project.zip"压缩包中,我们可以看到一个使用Struts1.x...
本例子源码旨在帮助初学者理解并搭建Struts1.x的开发环境。 在开始搭建环境之前,首先需要了解Struts1.x的基本构成。Struts1.x框架的核心组件包括ActionServlet、ActionForm、Action、Tiles等。ActionServlet是入口...
Struts1.x是一款经典的Java Web框架,由Apache软件基金会开发并维护。它是MVC(Model-View-Controller)设计模式的实现,极大地简化了Java Web应用程序的开发过程。本资源集合包含了所有最新的Struts1.x项目应用,为...
【Struts1.x入门教程】 Struts1.x是Apache Jakarta项目的一个重要组成部分,它是一个用于构建企业级Web应用程序的开源MVC框架。该框架的主要目标是简化JavaServer Pages(JSP)、Servlet和标签库的使用,同时提升...
首先,我们来看核心的`struts.jar`文件。这是Struts框架的核心库,包含了所有必要的类和接口,用于处理HTTP请求,管理Action类,以及实现MVC模式。它包含了ActionForm、Action、Dispatcher等关键组件,这些组件协同...
Struts 2.X是Java Web开发中非常重要的一个框架,它基于MVC(Model-View-Controller)设计模式,提供了一种结构化的、灵活的、可扩展的方式来构建应用程序。在《Struts 2.X权威指南(第3版)》第二章中,作者深入...
Struts 2.x权威指南(第3版)
学习Struts1.x的核心源码有助于提升对MVC模式的理解,对于初学者,这是一个很好的起点,能帮助他们掌握Java Web开发的基础知识。同时,这也为开发者提供了改进和优化现有项目的基础,比如性能调优或添加自定义功能。...
freemarker与struts 1.x 结合,生成html 在http://blog.csdn.net/chen1255 的web中有详细描述关于freemarker与struts1.x的结合