- 浏览: 248105 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1721学习使用Java DataBas ... -
在derby(Java DB) 中操作 clob 和 blob
2006-04-14 15:23 1444在前面一篇文章中, ... -
利用swing开源组件和netbeans快速构建豪华swing界面
2006-04-15 13:41 1386利用swing开源组件和netbeans快速构建豪华s ... -
Java Pet Store 开始全面使用 Web 2.0 技术
2006-05-16 21:58 1012Java Pet Store 开 ... -
Hibernate Validator 简介
2006-05-17 10:35 1224Hibernate Validator 简介 ... -
Google发布AJAX开发工具 Google Web Toolkit
2006-05-17 21:17 847Google Web Toolkit - Build ... -
解析 Hibernate Validator
2006-05-18 15:17 1439任何获得Matrix授权的网站,转载请保留以下作者信 ... -
Spring in Action 笔记(I)
2006-05-22 14:13 839By : icess ,我的部落格 http:// ... -
Spring in Action 笔记(II)
2006-05-25 00:04 1106... -
Spring in Action 笔记(III) -- 在Spring下的Hibernate数据操作
2006-05-27 11:01 792Spring in A ... -
Breezy简介 -- 快速开发Swing程序!
2006-06-04 22:33 1374Breezy简介 -- 快速开发Swing程序! ... -
最新消息 ,开源嵌入式数据库 Derby(JavaDB) 绑定在JDK 1.6中.
2006-06-18 18:48 1661如下:Source: Fran ... -
callisto(Eclipse 3.2) 迟到了 ?
2006-06-30 23:04 738在今天早些时候访问 callisto 的主页(http://w ... -
Callisto 终于可以下载了.
2006-07-01 04:47 729Callisto 终于可以下载了. Eclipse 3.2 ... -
最近想研究一下DWR 收集一些从入门到精通的系列资料
2006-07-13 15:55 909最近想研究一下DWR 收集一些从入门到精通的系列资料, 以备将 ... -
decode javascript.encode using java
2006-08-01 13:18 1502在前面一篇文章(http://www.hexiao.cn/bl ... -
Wicket 入门示例 :Hello World.
2006-08-05 10:38 1178Wicket http://wicketframework.o ... -
Wicket 教程2: 如何使用Label,MultiLineLabel,Border,BoxBorder
2006-08-07 15:29 1349上次介绍了一个wicket的一个HelloWorld入门示例, ... -
Wicket 教程3:使用 PageView 来调试页面
2006-08-08 09:22 1526使用 PageView 来调试页面.Wicket中提供了一个P ... -
Wicket 教程4:如何使用 Include,Panel,Fragment,Link
2006-08-08 09:25 2027Wicket 教程4:如何使用 ...
相关推荐
NULL 博文链接:https://coolszy.iteye.com/blog/522095
##spring roo i18n 中文插件##原始地址:https://code.google.com/p/spring-roo-addon-i18n-chinese/因为google code被墙导致无法访问,copy到github。如果有侵犯版权问题,请联系 删除##使用说明##下载源代码执行...
spring中的自定义属性编辑器,是我博客中的源代码,spring中的自定义属性编辑器,是我博客中的源代码
spring_in_action-sixth-edition.pdf
spring-in-action-5-samples-master源代码
NULL 博文链接:https://wooden-baby.iteye.com/blog/506838
spring源码缺失jar。spring-cglib-repack-3.2.5.jar,spring-objenesis-repack-2.6.jar
Spring4 In Action-7.1.2-添加其他的Servlet和Filter,Spring4 In Action-7.1.2-添加其他的Servlet和Filter,Spring4 In Action-7.1.2-添加其他的Servlet和Filter
spring-cloud-microservice-in-action,spring cloud学习。
Spring4 In Action-4.2-@AspectJ-切面,Spring4 In Action-4.2-@AspectJ-切面。Spring4 In Action-4.2-@AspectJ-切面
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出一条数据、输出列表、接收表单,Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出一条数据、输出列表、接收表单
下载下来就可以运行,注释清晰,Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转
Spring-in-Action Spring-in-Action Spring-in-Action
spring in action 中文版6-11
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 ...
Spring4 In Action-3.5.1-@PropertySource运行时注入值,Spring4 In Action-3.5.1-@PropertySource运行时注入值,Spring4 In Action-3.5.1-@PropertySource运行时注入值,Spring4 In Action-3.5.1-@PropertySource...
spring-in-action-2nd-cn7.rar
黑马程序员-SpringCloud-学习笔记01-认识微服务