簡體   English   中英

如何實現Primefaces progressBar的更新處理程序?

[英]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。 要使用它:

  1. 在您的支持bean中定義一個方法,您將在其中使用RequestContext對象

     public void doJs() { RequestContext ctx = RequestContext.getCurrentInstance(); context.execute("progress.cancel();"); } 
  2. <p:ajax/>listener屬性中設置此方法

     <p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress"> <p:ajax event="complete" listener="#{theBean.doJs}"/> </p:progressBar> 

編輯:要在每次ajax更新后執行執行,設置有點不同:

  1. interval屬性添加到進度條以引入更好的受控輪詢機制

     <p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress" interval="3000"> 
  2. 添加<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM