2016-09-14 226 views
0

返回null據spring ref docsjava.beans.PropertyEditorManager.findEditor(Locale.class)春季

Spring使用java.beans.PropertyEditorManager來爲可能需要的屬性編輯器的搜索路徑。

但是我卻越來越空的位置:

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

import java.beans.PropertyEditor; 
import java.beans.PropertyEditorManager; 
import java.util.Locale; 

public class DefaultEditorsTest { 

    public static void main (String[] args) { 
     ApplicationContext context = new 
          ClassPathXmlApplicationContext("spring-config.xml"); 

     PropertyEditor editor = PropertyEditorManager.findEditor(Locale.class); 
     System.out.println(editor); 
    } 
} 

輸出:

Sep 13, 2016 8:47:29 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 
INFO: Refreshing org[email protected]17f052a3: startup date [Tue Sep 13 20:47:29 CDT 2016]; root of context hierarchy 
Sep 13, 2016 8:47:29 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from class path resource [spring-config.xml] 
null 

我的春天-config.xml中的實際註冊了幾個豆類。爲什麼我得到空?如果這不是一個正確的方法,那麼如何獲得Spring的LocaleEditor實例和其他?我想在一個swing應用程序中使用它,我可能會使用spring提供的很多,所以我不想手動註冊它們。 在此先感謝。

回答

1

您可以使用BeanWrapperImpl中已經(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/BeanWrapperImpl.html

注:從org.springframework.beans.propertyeditors包自動寄存器的默認屬性編輯器,適用於除了JDK的標準屬性編輯器。

BeanWrapperImpl wrapper = new BeanWrapperImpl(bean); 
PropertyEditor editor = wrapper.getDefaultEditor(Locale.class); 
System.out.println(editor); 
+0

Thanks abaghel,that works。但據我瞭解,是不是有一個全球性的財產編輯登記處?從你的方法看來,編輯器每次創建bean時都會重新創建(bean包裝器需要一個bean類或名稱,null不起作用),這是否正確?爲不同的bean創建不同的默認編輯器,可能取決於bean字段? –

+0

沒有bean的BeanWrapperImpl實例也可以工作,並且會加載PropertyEditor。嘗試BeanWrapperImpl wrapper = new BeanWrapperImpl(); – abaghel

+0

太棒了!那也可以。我認爲這是解決我的問題的唯一最好方法。順便說一句,我一直在努力解決更多問題。如果我在'new BeanWRapperImpl()'中使用空的構造函數,我可以獲得所有已註冊的默認編輯器的列表。再次感謝abaghel –