2012-11-16 40 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就会自动找到该类。