- 浏览: 47599 次
- 性别:
- 来自: 长春
最新评论
-
cljspn:
可以。转吧。
设计模式之策略模式(Strategy) -
aaa_star:
可以去apache 网站看一下tuscany,是对sca/sd ...
另人无奈的SOA -
7thbyte:
document.getElementsByTagName ...
用JS and DOM生成表格 -
cherryQQ:
只能在firefox浏览器中实现
用JS and DOM生成表格 -
shiren1118:
不知道有何应用啊?
转到http://grails.5d6d ...
设计模式之策略模式(Strategy)
今天做了了一个自定义PropertyEditor出现问题,字符串解析错误。下面我把相应的类与自定义的PropertyEditor写出,希望有人帮我解决一下:
java 代码
- package org.beans.beanwrapper;
- public class Address {
- private String street;
- private String doorNum;
- private String postCode;
- public String getStreet() {
- return street;
- }
- public void setStreet(String street) {
- this.street = street;
- }
- public String getDoorNum() {
- return doorNum;
- }
- public void setDoorNum(String doorNum) {
- this.doorNum = doorNum;
- }
- public String getPostCode() {
- return postCode;
- }
- public void setPostCode(String postCode) {
- this.postCode = postCode;
- }
- }
java 代码
- package org.beans.beanwrapper;
- public class Person {
- private String name;
- private Address address;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Address getAddress() {
- return address;
- }
- public void setAddress(Address address) {
- this.address = address;
- }
- }
java 代码
- package org.beans.beanwrapper;
- import java.beans.PropertyEditorSupport;
- import org.springframework.util.StringUtils;
- public class AddressProptertyEditor extends PropertyEditorSupport {
- public void setAsTest(String text) {
- // 支持的格式为 streeValue,doorNumValue,postCode
- System.out.println("使用自己的编辑器。");
- if (text == null || !StringUtils.hasText(text)) {
- throw new IllegalArgumentException("老大,不能为空啊!");
- }
- else
- {
- String[] strArr = StringUtils.tokenizeToStringArray(text,",");
- Address add = new Address();
- add.setStreet(strArr[0]);
- add.setDoorNum(strArr[1]);
- add.setPostCode(strArr[2]);
- setValue(add);
- }
- }
- }
java 代码
- package org.jms.beans.test;
- import junit.framework.TestCase;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.beans.beanwrapper.*;
- public class BeanWrapperTest extends TestCase {
- public void testWrapper() {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "classpath:resource/applicationContext.xml");
- Person person = (Person) context.getBean("person");
- System.out.println(person.getAddress());
- }
- }
自定义PropertyEditor注册配置文件如下
xml 代码
- <bean id="customEditorConfigurer"
- class="org.springframework.beans.factory.config.CustomEditorConfigurer">
- <property name="customEditors">
- <map>
- <entry key="org.beans.beanwrapper.Address"><!-- 属性类型 -->
- <bean
- class="org.beans.beanwrapper.AddressProptertyEditor" />
- <!--对应Address的编辑器 -->
- </entry>
- </map>
- </property>
- </bean>
- <bean id="person" class="org.beans.beanwrapper.Person">
- <property name="name" value="Tom" />
- <property name="address" value="朝阳区,Soho 1601,010101">
- </property>
- </bean>
出现问题的代码如下:
ruby 代码
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'person' defined in class path resource [resource/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
- PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.beans.beanwrapper.Address] for property 'address'; nested exception is java.lang.IllegalArgumentException: 朝阳区,Soho 1601,010101
- Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessException details (1) are:
- PropertyAccessException 1:
- org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.beans.beanwrapper.Address] for property 'address'; nested exception is java.lang.IllegalArgumentException: 朝阳区,Soho 1601,010101
- Caused by: java.lang.IllegalArgumentException: 朝阳区,Soho 1601,010101
- at java.beans.PropertyEditorSupport.setAsText(Unknown Source)
- at org.springframework.beans.TypeConverterDelegate.convertValue(TypeConverterDelegate.java:253)
- at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:177)
- at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:127)
- at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:775)
- at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:608)
- at org.springframework.beans.AbstractPropertyAccessor.setPropertyValue(AbstractPropertyAccessor.java:49)
- at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:74)
- at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:966)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)
- at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
- at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:642)
- at org.jms.beans.test.BeanWrapperTest.testWrapper(BeanWrapperTest.java:27)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
- at java.lang.reflect.Method.invoke(Unknown Source)
- at junit.framework.TestCase.runTest(TestCase.java:164)
- at junit.framework.TestCase.runBare(TestCase.java:130)
- at junit.framework.TestResult$1.protect(TestResult.java:110)
- at junit.framework.TestResult.runProtected(TestResult.java:128)
- at junit.framework.TestResult.run(TestResult.java:113)
- at junit.framework.TestCase.run(TestCase.java:120)
- at junit.framework.TestSuite.runTest(TestSuite.java:228)
- at junit.framework.TestSuite.run(TestSuite.java:223)
- at org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
- at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
- at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
- at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
发表评论
-
另人无奈的SOA
2008-01-11 15:55 1265现在漫天飞的SOA真是让人无奈。面向服务框架,公司现在正 ... -
类中私有方法的测试
2007-12-17 20:07 67在开发项目 时常会编写方法的测试,如果为公共方法junit提供 ... -
CAS入门配置
2007-12-04 14:42 1983环境:Windows XP + JDK 1.5 + Tomca ... -
观察者模式的应用
2007-11-26 10:15 953这上一周项目组想做一个权限的东东,通过用户的的权限,看能不能执 ... -
OSSI与SCA
2007-11-20 13:27 62资料网址: http://www.iteye.com/subj ... -
SSO即单点登陆笔记
2007-11-20 13:21 57本人比较认可的网址: ... -
CustomDateEditor在spring注册
2007-10-30 08:32 1463BeanWrapperImpl默认没有注册CustomDate ... -
spring框架下的JMS
2007-10-23 08:41 1083谁有Spring框架下开发JMS的例子,MQ用apache-a ... -
spring MVC
2007-03-21 13:13 18811) BeanNameUrlHandleMapping,是一个 ... -
避免客户端代码直接引用目标Bean
2007-03-16 08:23 3365在Spring的ApplicationContext中为了避免 ...
相关推荐
2. **README文件**:提供详细的安装和使用指南,包括可能遇到的问题和解决方案。 3. **LICENSE文件**:说明插件的许可协议,规定了用户可以如何使用和分发插件。 4. **图标和图片资源**:可能包含用于在Eclipse界面...
Spring 为了解决这个问题,引入了更现代且更为灵活的类型转换系统。 Spring 3.0 引入了通用类型转换接口,包括 `Converter` 和 `GenericConverter`,它们提供了更为强大的类型转换功能,不仅限于简单的 String 到...
SpringMVC 默认不支持这个格式的转换,因此需要手动配置,自定义数据的绑定才能解决这个问题。在需要日期转换的 Controller 中使用 SpringMVC 的注解 @InitBinder 和 Spring 自带的 WebDataBinder 类来操作。 @...
3. **自定义PropertyEditor**:Spring支持注册自定义的PropertyEditor,用于转换特定类型的属性值。 综上所述,Spring框架通过其强大的依赖注入机制和丰富的扩展点,为Java开发者提供了一个灵活、高效、可扩展的...
通过研究这个解决方案,开发者可以学习到如何将自定义模板集成到XAF项目中,并应用于实际场景。 总的来说,使用自定义模版实现XAF子导航栏是一种提升应用界面美观度和用户体验的有效方式。它不仅展示了XAF的灵活性...
这个过程通常涉及到Java的`java.beans.PropertyEditor`接口,通过注册自定义的`PropertyEditor`实例,可以在Struts的ActionForm或者Action中进行类型转换。 标签“类型转换器”进一步强调了这个压缩包内容的核心。...
- **使用PropertyEditor**:在ActionForm或Action类中注册一个自定义的`java.beans.PropertyEditor`,处理日期字符串到Date对象的转换。 - **使用Struts的datetime标签**:如果使用Struts的标签库,可以使用`...
- 非标准getter/setter:对于非标准的getter和setter方法,BeanUtils可能无法正确识别,这时需要自定义PropertyEditor。 - 国际化支持:BeanUtils支持通过ResourceBundle进行属性值的国际化。 总之,Apache Commons...
- **线程安全性问题**:`PropertyEditor`的设计不是线程安全的,这意味着在多线程环境下使用时,需要为每个线程创建一个新的实例。 - **类型兼容性问题**:`setValue(Object)`方法接受任意类型的对象,这要求开发者...
从Spring 3开始,SpringMVC引入了更为强大的数据绑定框架,解决了上述问题,并提供了更加灵活和强大的数据转换、验证及格式化能力。 ##### 1. 类型转换 - **核心组件**:`ConversionService`接口及其具体实现类`...
5. **InitBinder与自定义StringEscapeEditor**:在Spring MVC中,我们可以使用`@InitBinder`注解和自定义的`PropertyEditor`来处理参数绑定。例如,创建一个名为`StringEscapeEditor`的类,继承自`...
Struts2是一个非常流行的Java Web框架,它提供了一种优雅的方式来构建MVC(模型-视图-控制器...通过自定义类型转换器,我们可以解决框架默认转换机制无法满足的特殊需求,如复杂的对象序列化、自定义格式的日期处理等。
- **微服务架构**:Spring Cloud 为构建分布式系统提供了完整的解决方案。 #### 三、Spring的核心概念 ##### 3.1 Beans、BeanFactory 和 ApplicationContext - **Beans**:Spring 中的对象被称为 Bean。这些 Bean...
endorphin 提供了详尽的文档和教程,包括用户社区论坛,方便用户交流经验和解决问题。同时,官方支持渠道也随时准备解答疑问。 通过上述概述,我们可以看出 endorphin2.7 不仅是一款强大的虚拟世界模拟工具,更是...
1. 自定义前缀处理器:这通常是一个实现了Spring的`PropertyEditorRegistrar`接口的类,它会在数据绑定开始之前注册一个自定义的`PropertyEditor`,这个`PropertyEditor`能够处理带有前缀的属性名。 2. 前缀感知的`...
- **自定义编辑器**:QtPropertyBrowser支持自定义编辑器,通过实现PropertyDelegate类,可以为特定类型的属性提供定制的输入控件。 - **事件处理**:通过信号和槽机制,处理属性值的改变事件,进行相应的业务逻辑...
作者通过精心设计的示例程序,展示了最新的编程技巧和最佳实践,旨在帮助专业开发者解决实际工作中遇到的问题。 ### 1. Streams and Files 本书详细介绍了Java中的流和文件处理技术,包括输入/输出流(如...
- **PropertyEditor:** PropertyEditor 用于自定义 Bean 属性的类型转换规则,可以用于处理复杂的数据类型。 **3-4 节Spring表达式(SPEL)** - **SPEL 特性说明:** SPEL 支持对对象的属性进行查询和操作,可以...
9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...