[英]How to implement update handler for Primefaces progressBar?
我有一個常規的Ajax PF progressBar:
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress">
<p:ajax event="complete" oncomplete="progress.cancel();"></p:ajax>
</p:progressBar>
每當progressBar更新它的值時,如何運行我的JavaScript代碼?
使用RequestContext
對象從服務器端執行javascript。 要使用它:
在您的支持bean中定義一個方法,您將在其中使用RequestContext
對象
public void doJs() { RequestContext ctx = RequestContext.getCurrentInstance(); context.execute("progress.cancel();"); }
在<p:ajax/>
的listener
屬性中設置此方法
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress"> <p:ajax event="complete" listener="#{theBean.doJs}"/> </p:progressBar>
編輯:要在每次ajax更新后執行執行,設置有點不同:
將interval
屬性添加到進度條以引入更好的受控輪詢機制
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress" interval="3000">
添加<f:event/>
以掛鈎組件的頁面生命周期,並從那里執行服務器端更新。 我將推薦PostValidateEvent
事件
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress" interval="3000"> <f:event type="postValidate" listener="#{theBean.doJs}" /> </p:progressBar>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.