- 浏览: 126508 次
- 来自: ...
最近访客 更多访客>>
文章分类
最新评论
-
dwangel:
给messageSource设置属性
<property ...
Spring i18n的better practice(相对于appfuse) -
dwangel:
spring 的message tag有一个属性text,可以 ...
Spring i18n的better practice(相对于appfuse) -
sn201:
awk高级篇
有问题啊!有问题!有问题!有问题!有问题!
i ...
awk文本处理总结(入门,中级,高级) -
happy_javaboy:
...
Log4j日志管理系统简单使用说明
ApplicationContext
接口扩展了MessageSource
接口,因而提供了消息处理的功能(i18n或者国际化)。与HierarchicalMessageSource
一起使用,它还能够处理嵌套的消息,这些是Spring提供的处理消息的基本接口。让我们快速浏览一下它所定义的方法:
-
String getMessage(String code, Object[] args, String default, Locale loc):用来从
MessageSource
获取消息的基本方法。如果在指定的locale中没有找到消息,则使用默认的消息。args中的参数将使用标准类库中的MessageFormat
来作消息中替换值。 -
String getMessage(String code, Object[] args, Locale loc):本质上和上一个方法相同,其区别在:没有指定默认值,如果没找到消息,会抛出一个
NoSuchMessageException
异常。 -
String getMessage(MessageSourceResolvable resolvable, Locale locale)
:上面方法中所使用的属性都封装到一个MessageSourceResolvable
实现中,而本方法可以指定MessageSourceResolvable
实现。
当一个ApplicationContext
被加载时,它会自动在context中查找已定义为MessageSource
类型的bean。此bean的名称须为messageSource
。如果找到,那么所有对上述方法的调用将被委托给该bean。否则ApplicationContext
会在其父类中查找是否含有同名的bean。如果有,就把它作为MessageSource
。如果它最终没有找到任何的消息源,一个空的StaticMessageSource
将会被实例化,使它能够接受上述方法的调用。
Spring目前提供了两个MessageSource
的实现:ResourceBundleMessageSource
和StaticMessageSource
。它们都继承NestingMessageSource
以便能够处理嵌套的消息。StaticMessageSource
很少被使用,但能以编程的方式向消息源添加消息。ResourceBundleMessageSource
会用得更多一些,为此提供了一下示例:
<beans> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>format</value> <value>exceptions</value> <value>windows</value> </list> </property> </bean> </beans>
这段配置假定在你的classpath中有三个资源文件(resource bundle),它们是format
, exceptions
和windows
。通过ResourceBundle,使用JDK中解析消息的标准方式,来处理任何解析消息的请求。出于示例的目的,假定上面的两个资源文件的内容为…
# in 'format.properties'
message=Alligators rock!
# in 'exceptions.properties'
argument.required=The '{0}' argument is required.
下面是测试代码。因为ApplicationContext
实现也都实现了MessageSource
接口,所以能被转型为MessageSource
接口
public static void main(String[] args) { MessageSource resources = new ClassPathXmlApplicationContext("beans.xml"); String message = resources.getMessage("message", null, "Default", null); System.out.println(message); }
上述程序的输出结果将会是...
Alligators rock!
总而言之,我们在'beans.xml'
的文件中(在classpath根目录下)定义了一个messageSource
bean,通过它的basenames
属性引用多个资源文件;而basenames
属性值由list元素所指定的三个值传入,它们以文件的形式存在并被放置在classpath的根目录下(分别为format.properties
,exceptions.properties
和windows.properties
)。
再分析个例子,这次我们将着眼于传递参数给查找的消息,这些参数将被转换为字符串并插入到已查找到的消息中的占位符(译注:资源文件中花括号里的数字即为占位符)。
<beans> <!-- thisMessageSource
is being used in a web application --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="baseName" value="WEB-INF/test-messages"/> </bean> <!-- let's inject the aboveMessageSource
into this POJO --> <bean id="example" class="com.foo.Example"> <property name="messages" ref="messageSource"/> </bean> </beans>
public class Example { private MessageSource messages; public void setMessages(MessageSource messages) { this.messages = messages; } public void execute() { String message = this.messages.getMessage("argument.required", new Object [] {"userDao"}, "Required", null); System.out.println(message); } }
调用execute()
方法的输出结果是...
The 'userDao' argument is required.
对于国际化(i18n),Spring中不同的MessageResource
实现与JDK标准ResourceBundle中的locale解析规则一样。比如在上面例子中定义的messageSource
bean,如果你想解析British (en-GB) locale的消息,那么需要创建format_en_GB.properties
,exceptions_en_GB.properties
和windows_en_GB.properties
三个资源文件。
Locale解析通常由应用程序根据运行环境来指定。出于示例的目的,我们对将要处理的(British)消息手工指定locale参数值。
# in 'exceptions_en_GB.properties'
argument.required=Ebagum lad, the '{0}' argument is required, I say, required.
public static void main(final String[] args) { MessageSource resources = new ClassPathXmlApplicationContext("beans.xml"); String message = resources.getMessage("argument.required", new Object [] {"userDao"}, "Required", Locale.UK); System.out.println(message); }
上述程序运行时的输出结果是...
Ebagum lad, the 'userDao' argument is required, I say, required.
MessageSourceAware
接口还能用于获取任何已定义的MessageSource
引用。任何实现了MessageSourceAware
接口的bean将在创建和配置的时候与MessageSource
一同被注入。
发表评论
-
浅析Java语言中两种异常的差别
2006-08-24 21:08 605Java提供了两类主要 ... -
JavaMail API详解
2006-09-04 17:12 584摘要:JavaMail API是读 ... -
JAVA操作Excel电子表格
2006-09-09 11:44 749只要有表格,就会有Microsoft Excel,用Micr ... -
让POI架起Java与Office之间的桥梁
2006-09-09 11:45 653本文将阐述如何用POI来 ... -
文件和目录操作的常用方法
2006-09-14 16:21 791package com.xgll.util; ... -
Java中正则表达式使用方法详解
2006-09-19 19:31 799如果你曾经用过Perl或任 ... -
在项目中,用到的关于时间操作的一些常用方法!!
2006-09-19 19:32 718package com.hoten.util; impor ... -
db4o 连接池
2006-09-28 17:19 737这几天花了点时间弄了个 db4o 连接池,比较简单,连接池原型 ... -
java的md5加密类
2006-09-29 11:35 677MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如 ... -
代码动态生成利器ASM
2006-11-04 11:05 908作者:薛谷雨 作 ... -
native2ascii用法
2006-11-21 14:54 679中文资源转换成utf-8编码 native2ascii -en ... -
编写安全的Java代码
2006-12-29 20:47 640作者:Radic 来 ... -
常用 java File 操作类
2007-06-14 16:52 719业务常用,供大家学习: ... -
JAVA之精髓IO流
2007-06-20 21:49 468一. Input和Output 1. stream ... -
【此帖已结】常用数据库JDBC连接写法(整理)
2007-09-14 09:07 674为了方便大家查找,整 ... -
util包中Calendar和Properties用法:
2007-09-14 09:43 477import java.util.Calendar;impor ... -
JSP动作
2007-10-19 12:57 693JSP动作利用XML语法格式的标记来控制Servlet引擎的行 ... -
GBK和UTF-8的区别
2007-11-21 17:35 662GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字 ... -
Java多线程编程详解
2008-06-07 13:42 693一:理解多线程 多线程是这样一种机制,它允许在程序中并发执行 ... -
判定文件编码或文本流编码的方法
2008-06-16 14:44 875在程序中,文本文件经常用来存储标准的ASCII码文本,比 ...
相关推荐
Spring MVC的国际化(i18n)是基于Java的国际化机制构建的,它利用Resource Bundle加载对应国家/地区(Locale)的语言资源文件,以便根据用户的语言环境提供相应的信息。Spring MVC通过`ResourceBundleMessageSource...
Spring i18n,全称为“Spring 国际化”,是Spring框架提供的一个强大的功能,用于支持多语言环境的应用程序开发。它使开发者能够轻松地为不同地区的用户提供本地化的界面和信息,从而提升应用程序的全球适用性。在...
在本文中,我们将深入探讨如何在Spring框架中利用`messageSource`与Ehcache整合,以实现国际化(i18n)功能并优化提示语句的数据库读取性能。`messageSource`是Spring提供的一种用于处理多语言环境下的消息管理机制,...
在Java中,这一功能主要通过Java的国际ization(i18n)和本地化(l10n)API来实现。 首先,我们需要理解`ResourceBundle`类的重要性。`ResourceBundle`是Java i18n的核心,它用于存储和加载不同语言环境下的文本...
在这个项目中,我们将探讨如何利用这些技术来实现基于浏览器语言的国际化配置。 1. **Spring Boot的国际化(i18n)支持** Spring Boot通过`MessageSource`接口提供国际化支持。开发者可以创建`messages.properties`...
国际化(i18n)是指使软件产品能够适应不同地区的语言和文化习俗,通常通过分离代码中的文本和呈现方式来实现。而gettext是Linux系统下广泛使用的国际化工具,它支持多语言翻译,并提供了一套方便的工具链,如msgfmt...
在IT行业中,异常信息国际化(I18N)是一个重要的设计和实现环节,尤其是在开发多语言支持的应用程序时。这涉及到将程序中的错误消息、警告和其他用户可见的文本转化为不同地区的语言,以便全球用户能够理解和使用。...
国际化(i18n)是一种软件设计方法,允许应用程序根据用户的语言和地区设置来显示不同的内容。在SpringMVC中,我们可以利用`ResourceBundle`和`MessageSource`接口来实现这一功能。 1. **ResourceBundle**:这是...
在Spring MVC框架中,国际化(i18n)是一个重要的特性,它允许应用程序根据用户的语言和地区提供本地化的信息。这个“spring mvc 国际化 demo”是一个展示如何利用注解实现这一功能的实例。接下来,我们将深入探讨...
Spring框架是Java开发中广泛使用的轻量级框架,它的国际化(Internationalization,简称i18n)功能使得应用程序能够根据用户的地区和语言偏好提供本地化的信息和服务。在本项目"spring国际化项目"中,我们将深入探讨...
1. **实现国际化(i18n)**:ApplicationContext可以加载资源束文件,用于处理不同地区的消息。例如,我们可以为不同的语言创建`messages.properties`文件,ApplicationContext会根据用户的区域设置选择合适的资源束...
国际化(i18n)是软件设计的一个重要方面,它允许程序根据用户的地区或语言设置来显示相应的文本内容。 首先,我们需要了解Spring MVC中实现国际化的基本步骤: 1. **配置资源文件**: - 在项目中创建`src/main/...
Web项目的国际化,通常简称为i18n(取“internationalization”一词的第18个字母和第19个字母),是使软件能够适应不同语言和地区的过程。这个过程涉及将文本、日期、时间、货币格式等从源代码中分离出来,以便在...
本教程将详细讲解如何利用SpringMVC实现国际化(Internationalization,简称i18n),以提供多语言支持。 一、国际化基本概念 国际化是一种设计和开发软件的方式,使其能够适应不同的语言和文化环境。这通常涉及到...
7. **I18N框架**:有一些第三方框架如Spring的MessageSource,可以帮助简化国际化处理,提供更高级的功能,如消息参数化和上下文敏感的错误消息。 8. **Unicode**:Java使用Unicode编码,确保支持全球所有语言的...
SpringBoot,作为Java生态中的轻量级框架,为开发者提供了便捷的国际化(i18n)支持。本文将基于"myi18n-demo.zip"这个压缩包,深入讲解如何在SpringBoot项目中实现i18n功能,并探讨相关的核心概念和技术要点。 1. **...
国际化(i18n)是任何应用都需要考虑的重要功能,它允许应用程序为不同的地区和语言提供定制的显示内容。在Spring MVC中实现国际化,我们可以利用Spring提供的`MessageSource`接口和资源文件来实现。 首先,我们...
不用重新启动服务器就可以进行重新加载利用内置的Spring 容器实现依赖注入基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态...