2016-10-12 3 views
1

내 진행 표시 줄이 업데이트되지 않았습니다. 이유가 무엇입니까? 컨트롤러 방법은 예상대로 호출되고 통해 진행 상태 변수를 정확하게 증가 :Primefaces 진행 표시 줄이 업데이트되지 않습니까?

XHTML

<p:dialog> 
    <h:outputLabel value="Count:" for="batchCount"/> 
    <p:inputText id="batchCount" required="true" 
     value="#{batchModel.count}"> 
    </p:inputText> 

    <p:commandButton id="generateBatchButton" value="GO" 
     actionListener="#{batchController.sendBatch()}" 
     onclick="PF('progressVar').start();" 
     oncomplete="PF('dialogBatchParams').hide();"/> 

    <p:progressBar id="progressBar" 
     widgetVar="progressVar" 
     value="#{batchModel.progress}" 
     labelTemplate="{value}%"> 
    </p:progressBar> 
</p:dialog> 

CONTROLLER 방법

public void sendBatch() {  
    for (int i = 0; i < batch.size(); i++) { 
     batchModel.setProgress(Math.round(100 * (float) i/(float) batch.size())); 
     // Do stuff here 
    } 
} 

MODEL

,

2016-10-19 10:08:49,707 INFO controller.BatchController -> Sending batch 
0 
10 
20 
30 
40 
50 
60 
70 
80 
90 
2016-10-19 10:08:57,432 INFO controller.BatchController -> Done sending batch 

내가 함께하고 "업데이트"태그없이 시도, 나는 아약스 태그로 주위를 연주 PF (6)을 사용하고 있습니다 :

내 진행이 올바르게 업데이트, 나는 그것을 로깅이 출력을 얻을 그러나 주사위는 없습니다.

+2

BatchModel (및 컨트롤러)에서 @ViewScoped를 사용해보십시오. –

+0

.. 진행률 표시 줄의 각 업데이트가 진행 상황을 요청하는 트리거합니다. 범위를 요청 했으므로 계속 0이됩니다. –

+0

내가 말한 것처럼 변경했지만 진행률 표시 줄을 업데이트하지 않습니다. 나는 새 코드로 질문을 업데이트했다. – Tim

답변

2

귀하의 질문은 RequestScoped 콩으로 시작되었습니다. 그것들은 각 요청마다 만들어집니다. 막대의 업데이트가 요청을 필요로하기 때문에 진도가 0으로 설정된 새 빈을 다시 얻게됩니다.
빈 (및 컨트롤러)에 ViewScoped을 사용하는 것이 가장 좋습니다.

또한 진행률 표시 줄에 ajax="true"이 누락되어 있습니다 (클라이언트 측에서 업데이트를 수행해야합니다).

<p:progressBar id="progressBar" 
       ajax="true" 
       widgetVar="progressVar" 
       value="#{batchModel.progress}" 
       labelTemplate="{value}%"/> 
관련 문제