2012-11-16 7 views
37

PropertyEditorManagerは、Java7以前のグローバルレジストリではなく、ThreadGroupContextベースごとに登録/検索エディタを発見しました。Java7 PropertyEditorsがThreadGroupContext経由で登録されました

そしてJava7は、毎回新しいThreadGroupのThreadGroupContextを作成します。したがって、PropertyEditorFinder(実際にエディタを登録/検索する)は再び新しいものです。

Javaは、いくつかのクラス(ByteLong、など)のために事前に定義されたエディタを使用して)ctorPropertyEditorFinderに登録します。あらかじめ定義されたクラス(Longなど)に自分自身のPropertyEditorを登録したいとします。 Java6では簡単に実行できますが、Java7ではスレッドが新しいThreadGroup内に作成されるたびにエディタがなくなりました。

Java7で新しいThreadGroupのエディタが作成されるような素晴らしい方法で対処する方法はありますか教えてください。もし何か問題に直面すれば、どうやってそれを克服しますか?

P.S.私は自分の英語を謝るべきだと思う=)

P.P.S. ThreadGroupContextAppContextの代わりです。そしてコンテキストの作成の実装が似ていることを期待していました。どちらも、ThreadGroupとコンテキスト(Java 6ではAppContext、Java 7ではThreadGroupContext)とのマッピングを使用します。そして、java 6は、親の場合と同じようにを新しいThreadGroupに使用します。つまり、AppContextは、jvm内のThreadGroupツリー全体で使用されます。しかし、残念ながらThreadGroupContextの作成は異なります。これは単に新しいグループの新しいコンテキストに過ぎません。したがって、ある質問ThreadGroupContextが同じ作成テクニックを使用する場合、問題は自動的に解決されます。

+0

私はPropertyEditorManagerと同じ問題がありますが、解決策が見つかりませんまだ.. – Vadeg

答えて

1

FQPNがjava.lang.Longのクラスがあった場合は、java.lang.LongEditorというクラスを実装してアプリケーションに配布するだけで済みます。一般的には、エディタで編集したいクラス名を最後に追加したクラスを実装するだけで、Javaは自動的にそれを見つけるはずです。

関連する問題