Tôi có 2 dự án Java khác nhau, một dự án có 2 lớp: dynamicbeans.DynamicBean2
và dynamic.Validator
.ClassCastException khi truyền tới cùng một lớp
Về dự án khác, tôi nạp cả hai lớp học năng động và lưu trữ chúng trên một Object
class Form {
Class beanClass;
Class validatorClass;
Validator validator;
}
sau đó tôi đi trước và tạo ra một đối tượng Validator
sử dụng validatorClass.newInstance()
và lưu trữ nó trên validator
sau đó tôi có thể tạo một bean đối tượng cũng sử dụng beanClass.newInstance()
và thêm nó vào phiên.
portletRequest.setAttribute("DynamicBean2", bean);
Trong vòng đời của dự án Form
, tôi gọi validator.validate()
mà tải các đối tượng đậu tạo ra trước đó trong phiên (Tôi đang chạy Websphere Portal Server). Khi tôi cố gắng để đưa đối tượng này trở lại vào một DynamicBean2
nó không thành công với một ClassCastException.
Khi tôi kéo các đối tượng lại ra khỏi phiên sử dụng
faces.getApplication().createValueBinding("#{DynamicBean2}").getValue(faces);
và kiểm tra các lớp của nó bằng cách sử .getClass()
tôi nhận được dynamicbeans.DynamicBean2
. Đây là lớp tôi muốn truyền nó đến tuy nhiên khi tôi cố gắng lấy ClassCastException.
Bất kỳ lý do nào khiến tôi nhận được thông báo này?
Đoán của tôi (Tôi không có kinh nghiệm với máy chủ cổng) là bạn đang nạp lớp vào các portlet khác nhau, mỗi một trình nạp lớp của riêng nó. Sau đó bạn đặt thể hiện vào một đối tượng phiên làm việc và khi bạn lấy nó từ một portlet sai (từ đó nó được tạo ra), bạn có ngoại lệ của mình. Tôi đoán (dựa trên kinh nghiệm của WAS) rằng bạn cần đặt jar với lớp của bạn ở đâu đó cao hơn trong phân cấp tải lớp để nó được nạp bởi cha mẹ của cả hai trình nạp lớp portlet. – Robin
tức là Số 2, với chi tiết. – Robin
@waxwing Điều này đã được khá nhiều thời gian. Nhưng, liệu bạn có phiền không khi xây dựng giải pháp đầu tiên có thể bạn đã nói? Tôi cảm thấy rằng một vấn đề tôi đang gặp có thể được giải quyết bằng cách này. Cảm ơn trước! –