2011-11-04 32 views
5

Khi sử dụng <a4j:support> như được mô tả trong RichFaces example Tôi luôn nhận được lỗi sau khi thay đổi giá trị của hộp thả xuống.Lỗi JSF "Dự kiến ​​loại thành phần con ... Đã tìm thấy giá trị rỗng".

Mong đợi kiểu thành phần con của UISelectItem/UISelectItems cho loại thành phần javax.faces.SelectOne (myId). Đã tìm thấy null.

Dưới đây là mã JSF:

<h:selectOneMenu id="selectId" valueChangeListener="#{cs.myListener}" value="#{cs.selectList.selectedItem}"> 
<f:selectItems value="#{cs.bundeslandList.selectItems}" /> 
<a4j:support event="onchange" reRender="otherFieldId" /> 
</h:selectOneMenu> 

<h:selectOneMenu id="otherFieldId"> 
<f:selectItems value="#{cs.bundeslandList.selectOtherField.selectItems}" /> 
</h:selectOneMenu> 

Kể từ cs.bundeslandList.selectOtherField.selectItems là ít nhất một sản phẩm nào ArrayList, tôi chắc chắn rằng otherFieldId không thể null.


Tôi đã gỡ bỏ toàn bộ trang và tôi không còn gặp lỗi nữa. Các valueChangeListener được gọi là chính xác nhưng không may, otherFieldId sẽ không được làm mới sau khi cuộc gọi. Nó đã làm trống. Nhưng khi gỡ lỗi tôi có thể thấy rằng thuộc tính tương ứng được lấp đầy với các mục nhập.

+0

Vẫn đang làm việc trên đó… –

Trả lời

5

Bộ khởi động của <f:selectItems value> có lúc nào đó chắc chắn đã trả lại null. Không có lý do nào khác cho ngoại lệ này. Có khả năng luồng logic mã bean sao lưu của bạn là sai.

Lưu ý rằng làm cho thuộc tính này static là một ý tưởng rất tồi tệ. Nó sẽ được chia sẻ giữa tất cả các yêu cầu khác trên toàn bộ ứng dụng web. Bạn muốn làm cho nó dựa trên yêu cầu hoặc dựa trên phiên cao nhất.

+0

Xin lỗi, tôi đã sai về 'tĩnh'. –

+0

Xem bài viết đã chỉnh sửa của tôi. –

+0

Đó là một vấn đề khác và về mặt kỹ thuật nên có một câu hỏi mới. Bước đầu tiên sẽ là để xây dựng những gì chính xác bạn có ý nghĩa với "sẽ không được làm mới". Không phải là nó tái xuất hiện? Hoặc đã làm '' getter chỉ trả về một danh sách rỗng? – BalusC

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