2012-11-16 15 views
37

Dowiedziałem się, że PropertyEditorManager rejestruje/znajduje edytory na podstawie ThreadGroupContext, a nie na globalny rejestr jak przed Java7.Java7 PropertyEditors zarejestrowany przez ThreadGroupContext

A Java7 za każdym razem tworzy nowy obiekt ThreadGroupContext dla nowego ThreadGroup. Tak więc PropertyEditorFinder (który faktycznie rejestruje/znajduje edytory) jest znowu nowy.

Java używa predefiniowanych edytory dla niektórych klas (Byte, Long, etc) i rejestruje je w PropertyEditorFinder na ctor). Załóżmy, że chcę zarejestrować własną PropertyEditor dla niektórych predefiniowanych klas (tj. Long). Jest to łatwe do zrobienia w Javie6, ale w Java7, za każdym razem wątki są tworzone w nowym ThreadGroup Straciłem mojego edytora.

Czy możesz mi powiedzieć, czy istnieje jakieś rozwiązanie, które pozwoli w miły sposób stworzyć edytor dla nowego ThreadGroup w Java7? Jeśli napotkasz problem i jak go pokonać?

P.S. Chyba powinienem przeprosić za mój angielski =)

P.P.S. ThreadGroupContext jest zamiennikiem dla AppContext. Miałem nadzieję, że implementacja tworzenia kontekstów będzie podobna: obie używają mapowania między ThreadGroup a kontekstem (AppContext w java 6, ThreadGroupContext w java 7). I java 6 używa tego samego AppContext dla nowego ThreadGroup jak dla rodzica. Innymi słowy, AppContext jest używane do całego drzewa ThreadGroup w jvm. Ale niestety tworzenie ThreadGroupContext jest inne - jest to po prostu nowy kontekst dla nowej grupy. Pytanie zostanie automatycznie rozwiązane, jeśli pewnego dnia ThreadGroupContext użyje tej samej techniki tworzenia.

+0

Mam ten sam problem z PropertyEditorManager i nie znalazłem rozwiązania jeszcze.. – Vadeg

Odpowiedz

1

Jeśli miałeś klasę z FQPN z java.lang.Long, wystarczy zaimplementować klasę o nazwie java.lang.LongEditor i rozprowadzić ją razem z aplikacją. Na ogół wystarczy zaimplementować klasę, która ma nazwę klasy, którą chcesz edytować, z dodanym do niej edytorem, a Java powinna go znaleźć automatycznie

Powiązane problemy