2012-11-16 39 views
37

我發現PropertyEditorManager寄存器/根據ThreadGroupContext找到編輯器,而不是每個全局註冊表的Java7之前的編輯器。Java7屬性編輯器通過ThreadGroupContext註冊

Java7每次都會爲新的ThreadGroup創建一個新的ThreadGroupContext。因此PropertyEditorFinder(實際上註冊/發現編輯器)也是新的。

Java使用預定義的編輯對於某些類(ByteLong等),並在ctor它們登記在PropertyEditorFinder)。假設我想爲某些預定義的類(即長)註冊我自己的PropertyEditor。在Java6中很容易,但在Java7中,每次在新的ThreadGroup內創建線程時,我都會丟失編輯器。

所以,你能告訴我有沒有任何解決方案以一種很好的方式處理在Java7中爲新的ThreadGroup創建哪些編輯器?如果面對一些問題,你如何克服它?

P.S.我想我應該爲我的英語道歉=)

P.P.S. ThreadGroupContextAppContext的替代品。我希望創建上下文的實現類似:都使用ThreadGroup與上下文(java 6中的AppContext,java 7中的ThreadGroupContext)之間的映射。而java 6對於其父母使用與新的ThreadGroup相同的AppContext。換句話說,AppContext用於jvm中的整個ThreadGroup樹。但不幸的是創建ThreadGroupContext是不同的 - 它只是一個新組的新環境。所以如果有一天ThreadGroupContext將使用相同的創建技術,問題會自動解決。

+0

我與PropertyEditorManager有同樣的問題,但我沒有找到解決方案然而.. – Vadeg

回答

1

如果您有一個java.lang.Long的FQPN類,您只需實現一個名爲java.lang.LongEditor的類並將其與您的應用程序分發。一般來說,只需實現一個具有要編輯的類名稱的類,並在編輯器末尾添加編輯器,Java就會自動找到該類。