2013-05-16 28 views
23

Các mã sai là:Render nhiều thành phần với f: ajax

<h:form id="search_form"> 
<h:commandButton class="button" value="View" action="#{InfoBean.search}"> 
    <f:ajax execute="search_form" render="linear1"></f:ajax> 
    <f:ajax execute="search_form" render="linear2"></f:ajax> 
</h:commandButton> 
<p:lineChart id="linear1" value="#{InfoBean.linearModel1}" legendPosition="e"/> 
<p:lineChart id="linear2" value="#{InfoBean.linearModel2}" legendPosition="e"/> 
</h:form> 

Những gì tôi muốn làm là khi tôi bấm vào commandButton, tôi muốn làm mới những hai bảng xếp hạng. Nhưng bây giờ tôi đã sử dụng hai thẻ <ajax>, trong đó thẻ thứ hai không hoạt động.

Vậy làm cách nào tôi có thể sử dụng ajax để hiển thị hai biểu đồ?

Trả lời

46

Bạn có thể hiển thị nhiều thành phần với một đơn f:ajax. Chỉ cần đảm bảo rằng tất cả các thành phần riêng lẻ bạn muốn cập nhật có id. Trong mẫu của bạn nó sẽ là một cái gì đó như:

<f:ajax execute="search_form" render="linear1 linear2"/> 

đâu các ID cần phải được ngăn cách bởi khoảng trắng chỉ như linear1 linear2 và không commaseparated như linear1, linear2 (mà chỉ hoạt động trong p:ajax).

Xem thêm:

+0

Tôi tự hỏi nếu có một giải pháp để làm cho nhiều năng động thành phần sẽ được tạo trong thời gian chạy – electricalbah

+0

@electri calbah f: ajax tải lại các phần tử từ máy chủ. nếu bằng "thời gian chạy" bạn có nghĩa là được tạo ra thông qua JS độc lập với máy chủ thì không thể cập nhật chúng như thế này. –

0

Đối a4j JSF sử dụng '': <a4j:support event="onchange" reRender="parent,child1,child2" />

+0

Câu hỏi là về 'f: ajax' .... – Kukeltje

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