2012-11-16 25 views
37

Tôi phát hiện ra rằng PropertyEditorManager sổ đăng ký/tìm người chỉnh sửa trên mỗi cơ sở ThreadGroupContext, không phải cho mỗi đăng ký toàn cầu như trước Java7.Java7 PropertyEditors đã đăng ký qua ThreadGroupContext

Và Java7 mỗi lần tạo một ThreadGroupContext mới cho một ThreadGroup mới. Do đó PropertyEditorFinder (mà thực sự đăng ký/tìm các trình soạn thảo) lại mới.

Java sử dụng biên tập viên được xác định trước cho một số lớp (Byte, Long, vv) và đăng ký chúng trong PropertyEditorFinder tại ctor). Giả sử tôi muốn đăng ký số PropertyEditor của riêng mình cho một số lớp được xác định trước (ví dụ: Dài). Thật dễ dàng để làm trong Java6, nhưng trong Java7, mỗi chuỗi thời gian được tạo trong phạm vi ThreadGroup mới Tôi đã mất trình soạn thảo của mình.

Vì vậy, bạn có thể vui lòng cho tôi biết có giải pháp nào để xử lý theo cách tốt đẹp mà trình chỉnh sửa được tạo cho một ThreadGroup mới trong Java7 không? Nếu đối mặt với một số vấn đề và làm thế nào để bạn vượt qua nó?

P.S. Tôi đoán tôi nên xin lỗi vì tiếng Anh của tôi =)

P.P.S. ThreadGroupContext là một thay thế cho AppContext. Và tôi hy vọng rằng việc triển khai các ngữ cảnh sẽ giống nhau: cả hai đều sử dụng ánh xạ giữa ThreadGroup đến ngữ cảnh (AppContext trong java 6, ThreadGroupContext trong java 7). Và java 6 sử dụng cùng một AppContext cho mới ThreadGroup như đối với cha mẹ của nó. Nói cách khác, AppContext được sử dụng cho toàn bộ cây ThreadGroup trong một cây jvm. Nhưng tiếc là việc tạo ra ThreadGroupContext là khác nhau - nó chỉ đơn giản là ngữ cảnh mới cho một nhóm mới. Vì vậy, câu hỏi được tự động giải quyết nếu một ngày ThreadGroupContext sẽ sử dụng cùng một kỹ thuật tạo.

+0

Tôi có cùng một vấn đề với PropertyEditorManager và tôi chưa tìm thấy giải pháp chưa.. – Vadeg

Trả lời

1

Nếu bạn có một lớp học với một FQPN của java.lang.Long, bạn chỉ cần triển khai một lớp có tên là java.lang.LongEditor và phân phối nó với ứng dụng của bạn. Nói chung, chỉ cần triển khai một lớp có tên của lớp bạn muốn chỉnh sửa bằng Trình chỉnh sửa được thêm vào cuối của nó và Java sẽ tự động tìm thấy nó

Các vấn đề liên quan