六分钟学会创建Oracle表空间的步骤
2012-04-02 17:29
363 查看
今天做了了一个自定义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)
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)
相关文章推荐
- 六分钟学会创建Oracle表空间的步骤
- 六分钟学会创建Oracle表空间的步骤
- 六分钟学会创建Oracle表空间的步骤
- 六分钟学会创建Oracle表空间的步骤
- 六分钟学会创建Oracle表空间的实现步骤
- 六分钟学会创建Oracle表空间的步骤
- 六分钟学会创建Oracle表空间的步骤
- 六分钟学会创建Oracle表空间的实现步骤
- 六分钟学会创建Oracle表空间的步骤
- 创建Oracle表空间的步骤
- 如何创建一个UITableView(步骤详解 没有任何编程基础都能学会 )
- 创建Oracle表空间的步骤
- 创建Oracle表空间,指定用户默认表空间,增加数据文件的步骤
- 创建oracle表空间的步骤
- 创建Oracle表空间的步骤(非原创)
- c#创建WINDOWS服务新手实验操作步骤
- Oracle 手动创建数据库步骤详解
- 一些vc的基本知识,创建应用实例的步骤
- 在ter中创建公钥私钥步骤