Tôi đang làm việc trên một ứng dụng JSF và tôi muốn làm mới định kỳ một thành phần với ajax Giống như hành vi của vùng thông báo facebook. Tôi có thể làm như thế nào?JSF, làm mới định kỳ một thành phần với ajax?
Trả lời
Thăm dò ý kiến là những gì bạn cần phải sử dụng
Thăm dò ý kiến thành phần thực hiện cuộc gọi ajax trong một khoảng thời gian xác định.
Ví dụ Primefaces Poll
<h:form id="form">
<h:outputText id="txt_count" value="#{counterBean.count}" />
<p:poll interval="3" listener="#{counterBean.increment}" update="txt_count" />
</h:form>
liên kết để giới thiệu Primefaces Ajax Poll
cách tiếp cận JSF tinh khiết sẽ được sử dụng timer js rằng sẽ gọi kỳ document.getElementById('someFormId:idOfButton').click();
hoặc jquery $("#someFormId\\:idOfButton").click();
trong khi nút sẽ trông l ike
<h:commandButton id="idOfButton">
<f:ajax render="txt_count"></f:ajax>
</h:commandButton>
một cái gì đó như thế này này
setInterval(function(){$("idOfButton").click()},3000);
Thông tin thêm về timer JavaScript Timing Events
Dựa trên lịch sử câu hỏi của OP, anh ấy đang sử dụng PrimeFaces, vì vậy đó là một bộ đồ hoàn hảo. – BalusC
Trong RichFaces có một thành phần bình chọn là tốt. Đây là một ví dụ tốt đẹp they cung cấp
<a4j:region>
<h:form>
<a4j:poll id="poll" interval="1000" enabled="#{userBean.pollEnabled}" reRender="poll,grid"/>
</h:form>
</a4j:region>
<h:form>
<h:panelGrid columns="2" width="80%" id="grid">
<h:panelGrid columns="1">
<h:outputText value="Polling Inactive" rendered="#{not userBean.pollEnabled}" />
<h:outputText value="Polling Active" rendered="#{userBean.pollEnabled}" />
<a4j:commandButton style="width:120px" id="control" value="#{userBean.pollEnabled?'Stop':'Start'} Polling" reRender="poll, grid">
<a4j:actionparam name="polling" value="#{!userBean.pollEnabled}" assignTo="#{userBean.pollEnabled}"/>
</a4j:commandButton>
</h:panelGrid>
<h:outputText id="serverDate" style="font-size:16px" value="Server Date: #{userBean.date}"/>
</h:panelGrid>
</h:form>
Trong các câu hỏi trong tương lai, sẽ hữu ích nếu bạn đề cập một cách rõ ràng thư viện thành phần nào bạn sử dụng, như PrimeFaces. Nếu bạn không đề cập đến bất cứ điều gì, JSF tiêu chuẩn sẽ luôn luôn được giả định. – BalusC