Trang của tôi bao gồm một số khu vực được tạo bằng cách lặp qua danh sách các mục bằng cách sử dụng <ui:repeat>
. Hãy tưởng tượng ví dụ đơn giản này:JSF 2.0: Hiển thị lại/cập nhật một mục duy nhất trong ui: lặp lại bằng cách sử dụng AJAX
<h:form id="form">
<ui:repeat id="repeatContainer" var="item" value="#{testBean.items}" varStatus="status">
<h:outputText value="#{item.title}: "/>
<!-- I want to re-render only a single one of these fields -->
<h:outputText id="valueContainer" value="#{item.value}"/><br/>
</ui:repeat>
</h:form>
Bây giờ, tôi muốn tái render (chỉ) các valueContainer
của một yếu tố cụ thể trong danh sách này sử dụng AJAX (nói, yếu tố với chỉ số 1). Tôi đã thử tất cả các kết hợp mà không cần bất kỳ may mắn:
<!-- Works, but renders all items: -->
<f:ajax render=":form"/>
<!-- This is what I actually want to achieve (does not work, comp. not found): -->
<f:ajax render=":form:repeatContainer:1:valueContainer"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:repeatContainer"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:repeatContainer:1"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:1"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:1:valueContainer"/>
<!-- Does not work (no error message, but does nothing): -->
<f:ajax render=":form:repeatContainer:valueContainer"/>
yêu cầu của tôi bao gồm:
- tôi cần phải xác định các thành phần để tái render với một định tuyệt đối đường, bởi vì nút mà kích hoạt bản cập nhật ở đâu đó hoàn toàn khác trong thành phần cây.
- Re-render toàn bộ trang hoặc hình thức (sử dụng
@all
/@form
) được vô ích với tôi, bởi vì đó là loại đặt ra câu hỏi tại sao tôi đang sử dụng JSF/AJAX ở tất cả ... - tôi cần để đạt được điều tương tự với PrimeFaces
<p:dataGrid>
tế bào (tức là chỉ cập nhật một thành phần phụ cụ thể của một ô cụ thể), nhưng tôi giả định rằng điều này làm giảm cùng một vấn đề.
Tôi đoán phải có một giải pháp dễ dàng cho điều này mà tôi hiện đang xem?
Xin lỗi, nhưng tôi không thấy làm thế nào mà trả lời câu hỏi. Đặt biểu mẫu trong p: outputPanel sẽ không giúp cập nhật các hàng riêng lẻ. – sleske