- 浏览: 252446 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tanglingshuai:
liulehua 写道根本原因是:没有把该对象对应的主键保存到 ...
关于: org.hibernate.StaleStateException: Batch update -
javeye:
转载了你的文章http://javeye.iteye.com/ ...
关于在tomcat下配置 error-page 500错误不能在IE下转发页面的问题 -
imlsq:
嘿嘿, 使用SEAM 7-8个月时间了还是放弃使用SEAM的想 ...
发现一个Seam做的企业应用,blackberry的在线商店 -
yuanliyin:
我也在用,唯一不爽的就是性能!
发现一个Seam做的企业应用,blackberry的在线商店 -
perfect:
假的 ,大家不要上当 ,根本不能用
HttpWatch 6.1.41 许可文件
Spring in Action 笔记 (IV) -- i18n问题和自定义属性编辑器
BY: icess Blog: http://blog.matrix.org.cn/page/icess
在Spring中处理I18N问题和使用Java里面的类基本上是一样的.使用org.springframework.context.support.ResourceBundleMessageSource
然后注入资源文件(一个名字为basename的属性),然后就可以在Context中使用资源文件了, 如下为一个配置示例: test.xml
<?
xml version = "1.0" encoding = "UTF-8" ?><!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" ><
beans >< bean id = "messageSource" class = "org.springframework.context.support.ResourceBundleMessageSource" >
< property name = "basename" >
<!-- 注意此处设置 资源 名字 和路径 -->
< value > test/i18n/test </ value >
</ property >
</ bean >
</
beans >下面为资源文件 test.properties
name =
\u51B0\u96E8
sex =
\u5148\u751Ftest_zh.properties
name =
\u51B0\u96E8
sex =
\u5148\u751Ftest_en_US.properties
name =
ice rain
sex =
male下面是一个简单的测试类:
package
test.i18n;import
java.util.Locale;import
org.springframework.context.ApplicationContext;import
org.springframework.context.support.ClassPathXmlApplicationContext;public
class TestI18n { /*** @param args
*/
public static void main(String[] args) { // TODO Auto-generated method stub
ApplicationContext context =
new ClassPathXmlApplicationContext( "test/i18n/test.xml" );String text = context.getMessage(
"sex" , new Object[0], Locale. US );String textZH = context.getMessage(
"sex" , new Object[0], Locale. CHINA );System.
out .println(text + " 中文:" +textZH);}
}
很简单,这样就可以了.
下面来看看Spring中的属性自定义编辑器,这个和Hibernate中的自定义属性差不多 的. 例如下面我们要看到了例子,映射一个电话号码,有areaCode,prefix和 number, 如果不使用自定义属性编辑器那么就要分别注入上面的3个代码,麻烦. 如果使用自定义属性编辑器,直接注入一个-分开的数字序列就可以了 如
888-666-9999
.在下面的例子中的Contact.java类有个PhoneNumber属性,里面保存了上面的3个代码,两个类的代码如下:
package
test.propertyEditor;
public class
Contact {
private
PhoneNumber phoneNumber;
private
String name;
public
Contact() {}
public
String getName() {
return
name;
}
public void
setName(String name) {
this
.name = name;
}
public
PhoneNumber getPhoneNumber() {
return
phoneNumber;
}
public void
setPhoneNumber(PhoneNumber phoneNumber) {
this
.phoneNumber = phoneNumber;
}
}
PhoneNumber.java
package
test.propertyEditor;
public class
PhoneNumber {
private
String areaCode;
private
String prefix;
private
String number;
public
PhoneNumber() {
}
public
PhoneNumber(String areaCode,String prefix,String number) {
this
.areaCode = areaCode;
this
.prefix = prefix;
this
.number = number;
}
public
String getAreaCode() {
return
areaCode;
}
public void
setAreaCode(String areaCode) {
this
.areaCode = areaCode;
}
public
String getNumber() {
return
number;
}
public void
setNumber(String number) {
this
.number = number;
}
public
String getPrefix() {
return
prefix;
}
public void
setPrefix(String prefix) {
this
.prefix = prefix;
}
}
然后定义一个用来编辑PhoneNumber的编辑器PhoneEditor.java 如下:
package
test.propertyEditor;
import
java.beans.PropertyEditorSupport;
public class
PhoneEditor
extends
PropertyEditorSupport {
public void
setAsText(String textValue) {
String stripped = stripNonNumber(textValue);
String areaCode = stripped.substring(
0
,
3
);
String prefix = stripped.substring(
3
,
6
);
String number = stripped.substring(
6
);
PhoneNumber phone =
new
PhoneNumber(areaCode,prefix,number);
setValue(phone);
}
private
String stripNonNumber(String original) {
StringBuilder allNumeric =
new
StringBuilder();
for
(
int
i =
0
; i < original.length(); i ++) {
char
c = original.charAt(i);
if
(Character.isDigit(c)) {
allNumeric.append(c);
}
}
return
allNumeric.toString();
}
}
继承java里面的属性编辑器,实现里面的一个方法就可以了, 下面就是在配置文件中注册该编辑器.如下:
testPropertyEditor.xml
<?
xml version = "1.0" encoding = "UTF-8" ?><!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" ><
beans >< bean id = "customEditorConfigurer" class = "org.springframework.beans.factory.config.CustomEditorConfigurer" >
< property name = "customEditors" >
< map >
< entry key = "test.propertyEditor.PhoneNumber" >
< bean id = "phoneEditor" class = "test.propertyEditor.PhoneEditor" ></ bean >
</ entry >
</ map >
</ property >
</ bean >
<!-- 如果不注册上面自定义Editor的实现, 需要注册一个PhoneNumber的bean,设置其属性然后再注册
Contact的PhoneNumber的属性
-->
< bean id = "contact" class = "test.propertyEditor.Contact" >
< property name = "phoneNumber" >
< value > 888-666-9999 </ value >
</ property >
</ bean >
</
beans >最后来测试一下注册的结果是否正确:
package
test.propertyEditor;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
public class
TestPropertyEditor {
/**
*
@param
args
*/
public static void
main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context =
new
ClassPathXmlApplicationContext(
"test/propertyEditor/testPropertyEditor.xml"
);
Contact c = (Contact) context.getBean(
"contact"
);
System.out.println(c.getPhoneNumber().getAreaCode());
System.out.println(c.getPhoneNumber().getPrefix());
System.out.println(c.getPhoneNumber().getNumber());
}
}
ok, 很简单,下一次来看看,Spring提供的一下比较有意思的功能.如定时,发送Email等.
发表评论
-
学习使用Java DataBase (Derby) -- 嵌入式数据库
2006-04-13 21:19 1757学习使用Java DataBas ... -
在derby(Java DB) 中操作 clob 和 blob
2006-04-14 15:23 1498在前面一篇文章中, ... -
利用swing开源组件和netbeans快速构建豪华swing界面
2006-04-15 13:41 1434利用swing开源组件和netbeans快速构建豪华s ... -
Java Pet Store 开始全面使用 Web 2.0 技术
2006-05-16 21:58 1054Java Pet Store 开 ... -
Hibernate Validator 简介
2006-05-17 10:35 1266Hibernate Validator 简介 ... -
Google发布AJAX开发工具 Google Web Toolkit
2006-05-17 21:17 890Google Web Toolkit - Build ... -
解析 Hibernate Validator
2006-05-18 15:17 1477任何获得Matrix授权的网站,转载请保留以下作者信 ... -
Spring in Action 笔记(I)
2006-05-22 14:13 877By : icess ,我的部落格 http:// ... -
Spring in Action 笔记(II)
2006-05-25 00:04 1153... -
Spring in Action 笔记(III) -- 在Spring下的Hibernate数据操作
2006-05-27 11:01 826Spring in A ... -
Breezy简介 -- 快速开发Swing程序!
2006-06-04 22:33 1414Breezy简介 -- 快速开发Swing程序! ... -
最新消息 ,开源嵌入式数据库 Derby(JavaDB) 绑定在JDK 1.6中.
2006-06-18 18:48 1707如下:Source: Fran ... -
callisto(Eclipse 3.2) 迟到了 ?
2006-06-30 23:04 775在今天早些时候访问 callisto 的主页(http://w ... -
Callisto 终于可以下载了.
2006-07-01 04:47 769Callisto 终于可以下载了. Eclipse 3.2 ... -
最近想研究一下DWR 收集一些从入门到精通的系列资料
2006-07-13 15:55 935最近想研究一下DWR 收集一些从入门到精通的系列资料, 以备将 ... -
decode javascript.encode using java
2006-08-01 13:18 1540在前面一篇文章(http://www.hexiao.cn/bl ... -
Wicket 入门示例 :Hello World.
2006-08-05 10:38 1223Wicket http://wicketframework.o ... -
Wicket 教程2: 如何使用Label,MultiLineLabel,Border,BoxBorder
2006-08-07 15:29 1392上次介绍了一个wicket的一个HelloWorld入门示例, ... -
Wicket 教程3:使用 PageView 来调试页面
2006-08-08 09:22 1560使用 PageView 来调试页面.Wicket中提供了一个P ... -
Wicket 教程4:如何使用 Include,Panel,Fragment,Link
2006-08-08 09:25 2066Wicket 教程4:如何使用 ...
相关推荐
在“Spring学习笔记(11)----自定义属性编辑器”这篇博文中,作者深入探讨了如何自定义属性编辑器以满足特定需求。 首先,我们需要了解属性编辑器的工作原理。当IoC容器读取配置文件时,如果发现一个属性值需要...
这篇博客“spring 自定义属性编辑器”可能详细介绍了如何在Spring中创建和注册自定义属性编辑器,以满足特定的业务需求。 首先,了解Spring中的属性编辑器机制。Spring会自动寻找并使用`java.beans.PropertyEditor`...
##spring roo i18n 中文插件##原始地址:https://code.google.com/p/spring-roo-addon-i18n-chinese/因为google code被墙导致无法访问,copy到github。如果有侵犯版权问题,请联系 删除##使用说明##下载源代码执行...
在Web开发领域,国际化(Internationalization,通常简称为i18n)是一个至关重要的概念,它使得应用程序能够适应不同国家和地区的用户需求。这个压缩包文件"web开发常用的东东备份-国际化i18n"可能包含了一些关于...
通过自定义属性编辑器,你可以更好地控制数据的输入和显示,使Spring应用程序更加灵活和健壮。在处理复杂的数据类型或者需要特殊格式化时,这是一个非常有用的工具。在给定的压缩包文件中,可能包含了示例代码或者更...
在Spring 2.0框架中,自定义属性编辑器(Custom Property Editor)是一个重要的功能,它允许开发者扩展Spring的默认属性绑定机制,以处理特定类型的转换。本文将深入探讨这一特性,结合源码分析和实际应用,帮助你...
`spring-boot-starter-hbase`是一个针对HBase定制的Spring Boot启动器,它的主要目的是提供一个便捷的API接口,使得开发者能够在Spring Boot环境中对HBase进行查询、更新等操作,而无需关心复杂的底层配置和连接管理...
通过结合SpringBoot框架和i18n(国际化)技术,我们可以实现错误信息的多语言支持,让错误信息能够适应不同的用户群体。 首先,让我们来深入理解SpringBoot。SpringBoot是Spring框架的一个子项目,它简化了创建独立...
然而,有时候在导入Spring项目时,可能会遇到一些问题,例如标题中提到的"spring-cglib-repack-3.2.4.jar"和"spring-objenesis-repack-2.4.jar"这两个jar包的缺失。这些jar包对于Spring框架的正常运行至关重要,因为...
标题 "springmvc i18n" 指的是Spring MVC框架中的国际化支持,这是一个关键功能,使得Web应用程序能够为不同的地区和语言提供本地化的用户体验。Spring MVC是Spring框架的一个模块,专注于处理HTTP请求和响应,提供...
国际化(i18n)是软件开发中的一个重要概念,它指的是使软件能够适应不同语言和地区的过程。这个术语“i18n”是由“internationalization”这个单词的首字母和中间的18个字母组成的,意在简洁地表示这个复杂的主题。在...
在Spring MVC框架中,属性编辑器(PropertyEditor)和参数解析器(HandlerMethodArgumentResolver)是两个关键组件,用于处理数据转换和模型绑定的过程。它们是实现灵活性和扩展性的重要手段,尤其在处理用户输入...
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
spring-boot:repackage 是 Spring Boot Maven Plugin 提供的一个 Goal,用于重新打包可执行的存档。该 Goal 需要指定以下参数: * finalName:存档的名称 * classifier:存档的分类器 * outputDirectory:存档的...
Spring Boot的国际化(i18n)配置是其强大功能的一部分,它允许开发人员为不同地区的用户提供本地化的应用体验。这个“Spring Boot 国际化(i18n)配置demo.zip”包含了一个演示如何在Spring Boot项目中实现i18n的示例...
Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出一条数据、输出列表、接收表单,Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出一条数据、输出列表、接收表单
Spring i18n会根据用户的浏览器设置或自定义配置来选择合适的Locale。 3. **MessageSource**:这是Spring的核心接口,用于加载和解析资源 bundle。Spring 提供了多种实现,如`...
通过分析提供的"spring-boot-08-starter"和"spring-boot-08-starter-test"两个Java项目,我们可以学习如何构建一个自己的Spring Boot Starter,并在其他项目中应用它。 Spring Boot的Starter是其核心特性之一,它...
Spring in Action CN.001<br>Spring in Action CN.002<br>Spring in Action CN.003<br>Spring in Action CN.004<br>Spring in Action CN.005<br>Spring in Action CN.006<br>Spring in Action CN.007<br>Spring in ...
在上述代码中,`basenames`属性设置为`classpath:i18n/messages`,意味着Spring将在类路径下的`i18n`目录查找名为`messages.properties`的资源文件。同时,我们设置了默认编码为UTF-8。 2. **创建资源文件**: ...