2012-04-03 34 views
15

Tôi đang sử dụng JSF 2.0. Tôi có một bean được quản lý mà tôi có thể truy cập thông qua trang xhtml của tôi. Bên trong chiếc đậu tôi đã tuyên bố một lớp bên trong. Tôi có thể truy cập ArrayList<String> của bean được quản lý chứ không phải ArrayList<InnerClass> và tôi nhận được lỗi rằng InnerClass không có thuộc tính có thể đọc được. Có ai biết chuyện gì không?Không thể truy cập lớp bên trong trong bean

Trả lời

30

Điều đó có thể xảy ra nếu lớp bên trong không phải là public. Sau đó nó sẽ được ẩn với các lớp khác bên ngoài gói (giống như JSF/EL chính nó!). Đảm bảo rằng lớp bên trong là public bất cứ khi nào bạn cần truy cập nó bằng JSF/EL.

public class Bean { 

    public class InnerClass { 
     // ... 
    } 

} 

Nếu không nó sẽ được hiểu là String và bạn sẽ nhận được trường hợp ngoại lệ khó hiểu như

javax.el.ELException: /test.xhtml: Sở hữu 'someProperty' không thể đọc được trên loại java.lang .String

khi bạn muốn truy cập #{innerClass.someProperty}.

+1

Tôi thấy điều này sau 2 giờ tìm kiếm lỗi. Tôi đoán họ nên ít nhất làm cho ngoại lệ rõ ràng hơn. Chuỗi ở đây đề cập đến kiểu dự kiến ​​(trong trường hợp của tôi là boolean), điều này thực sự khó hiểu. – NeplatnyUdaj

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