2015-01-21 13 views
0

我有一個按鈕,當我按下它時,該方法從數據庫中獲取數據並在數據表中顯示記錄。這一行動發生超過1分鐘,我想顯示一個進度條(時間是可變的)帶blockUI的實時進度條無法使用大氣中的primefaces

我發現這個頁面的解決方案:Show a real time progress bar in a Html User Dialog

的問題是,我顯示進度條,但總是是「0%」。在JavaScript函數中不要輸入。我不知道我是否做錯了什麼。

這是我的XHTML:

<h:form id="formAllocate"> 

    <p:panel id="panel" header="Realtime ProgressBar"> 
     <p:commandButton id="btn" value="Start" 
      actionListener="#{scheduleMB.startLongRunningProcess}"> 
     </p:commandButton> 
    </p:panel> 

    <p:blockUI block="panel" trigger="btn"> 
     <p:progressBar widgetVar="progressBar" style="width:300px" 
      labelTemplate="{value}%"> 
     </p:progressBar> 
     <span id="msg"></span> 
    </p:blockUI> 

</h:form> 

<p:socket channel="/realtime" onMessage="handleProgress"></p:socket> 

<script type="text/javascript"> 
    function handleProgress(progressJson) { 
     alert('begin'); 
     var progressData = eval("(" + progressJson + ")"); 
     progressBar.setValue(progressData.progress); 
     $("#msg").text(progressData.msg); 
    } 
</script> 

這是我的豆:

public void startLongRunningProcess(){ 
    EventBus eventBus = EventBusFactory.getDefault().eventBus(); 
    eventBus.publish("/realtime", "{ 'progress' : 10, 'msg' : 'Extract data'}"); 

    list = 
     getAuxService().findList(userSelected, initDate2, 
      endDate2); 
    } 

在web.xml:

<!-- Primefaces PUSH --> 
    <servlet> 
     <servlet-name>Push Servlet</servlet-name> 
     <servlet-class>org.primefaces.push.PushServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
     <async-supported>true</async-supported> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Push Servlet</servlet-name> 
     <url-pattern>/primepush/*</url-pattern> 
    </servlet-mapping> 

在我的pom.xml我有這樣的依存關係:

<dependency> 
    <groupId>org.atmosphere</groupId> 
     <artifactId>atmosphere-runtime</artifactId> 
    <version>2.2.2</version> 
</dependency> 

<dependency> 
    <groupId>org.roboguice</groupId> 
    <artifactId>roboguice</artifactId> 
    <version>2.0</version> 
</dependency> 

我使用的是primefaces 5.1,spring 3.2.5,hibernate 4.2.7,java 1.7,primefaces擴展3.0.0

我在做什麼錯?

Thx尋求幫助和解答。

回答

0

這個問題的答案(由我)能在(一式兩份)中找到post在PrimeFaces論壇

摘要:

  1. @PushEndpoint失蹤
  2. 4.0〜5.0 mirgration導遊是沒有遵循PF小部件的訪問(widgetName - > PF('widgetName))
  3. OP不知道每次發佈事件時都會設置進度條中的增量
+0

你最好包括/ blockquote /總結實際答案,而不是隻發佈鏈接。如果這個鏈接腐爛了,那麼整個答案就毫無價值。 Stack Exchange的答案應該能夠獨立存在,而無需點擊指向外部站點的鏈接來查找缺失的部分 - 最多隻能將它們用作支持。這樣,答案對未來有同樣問題的其他人也很有價值。即答案不應該以OP爲中心,但對任何有相同問題的人都有價值。 – BalusC 2015-01-23 12:35:36

+0

添加一個摘要對我來說很好,但是如果人們交叉帖子,而另一個論壇有一個冗長的討論,我不確定我想總結一下... 但是我現在要爲此做一個 – Kukeltje 2015-01-23 13:43:40

+0

Stack Exchange網站是問答網站而不是論壇。你有沒有嘗試過在論壇中尋找答案?如果對這個主題有很多不相關的回覆(「評論」),你難道不覺得答案很難找到嗎?如果回覆中只有一個鏈接被破壞或指向另一個網站,那麼你不得不再次抓取所有的亂七八糟的東西,否則你難道不覺得困惑嗎?)你是不是每次都很高興您看到Stack Exchange站點上其他人詢問的問題的世界級答案?嘗試提供相同的;) – BalusC 2015-01-23 13:54:25