2016-04-11 8 views
0

100%共有後にprogressBarコールをキャンセルしますか? 私はそうすることを試みた:progressBarでの呼び出しを停止Primefaces

public void doJs() { 
    RequestContext ctx = RequestContext.getCurrentInstance(); 
    context.execute("progress.cancel();"); 
} 

PF('progress').cancel();を呼び出し、成功せず。 私のprogressBarに従ってください。

<p:progressBar widgetVar="progress" ajax="true" global="false" 
        value="#{usarLayoutBean.porcentagem}" labelTemplate="{value}%" 
        styleClass="animated"> 
    <p:ajax event="complete" listener="#{usarLayoutBean.doJs()}"/> 
</p:progressBar> 
+0

**何が**行われますか?アラートを表示するだけの場合はどうなりますか?あなたはどこで 'PF( 'progress')を呼び出そうとしましたか?cancel();'? – Kukeltje

+0

私は 'p:dialog'を呼び出し、ダイアログをOnHideします。 100%に達すると、getPorcentagemの呼び出しを続けます。 – lss

答えて

0

以下のコードは、進行状況バーで使用できます。プログレスバーは100で停止し、getProgress()は再び呼び出されません。整数進行がビーン

package com.test; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

@ManagedBean 
@ViewScoped 
public class ProgressBean { 
    private Integer progress; 

    public Integer getProgress() { 
     System.out.println("getProgress() Old - " + progress); 

     if (progress == null) { 
      progress = 0; 
     } else { 
      progress = progress + (int) (Math.random() * 35); 

      if (progress > 100) // Only when progress = 100 does the onComplete() method gets called. 
       progress = 100; 
     } 

     System.out.println("getProgress() New- " + progress); 
     return progress; 
    } 

    public void setProgress(Integer progress) { 
     System.out.println("setProgress()" + progress); 
     this.progress = progress; 
    } 

    public void onComplete() { 
     System.out.println("onComplete()"); 

     //FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Progress Completed")); 
     progress = null; 
    } 

} 

出力

getProgress() Old - null 
getProgress() New- 0 
getProgress() Old - 0 
getProgress() New- 24 
getProgress() Old - 24 
getProgress() New- 50 
getProgress() Old - 50 
getProgress() New- 82 
getProgress() Old - 82 
getProgress() New- 100 
onComplete() 

JSF 2.2.4、Primefaces 5.3、Tomcatの8

管理100

<h:form> 
     <p:growl id="growl" /> 
     <p:commandButton value="Start" type="button" 
      onclick="PF('pbAjax').start();" /> 

     <p:progressBar widgetVar="pbAjax" ajax="true" 
      value="#{progressBean.progress}" labelTemplate="{value}%" 
      styleClass="animated" global="false"> 
      <p:ajax event="complete" listener="#{progressBean.onComplete}" 
       update="growl" /> 
     </p:progressBar> 
</h:form> 

に等しくなるとonCompleteの()が呼び出され

+2

テキストの説明があるかもしれません – Kukeltje

+0

なぜ以下のコードがうまくいくのですか...重要な違いは何ですか?それはなぜあなたがそれが質問で呼ばれなかったと仮定しますか?それらは答えで最も重要なことです(魚を与える代わりに魚を習う人を習う) – Kukeltje

-1
  1. 以下のコードはprogressBarを停止しません

    context.execute( "progress.cancel();");

正しい方法はdoJs()メソッドに

context.execute("PF('progress').cancel()"); 

あるので。

  1. getPorcentagemが少なくとも1回100を返しているかどうかを再度確認します。この場合、進行状況は自動的に停止します。
+0

質問を再読してください。 OPは "1"を試しました。それから、2は当初のコメントです – Kukeltje

+0

DHは、execute()メソッドとprimefacesウィジェットの使い方を誤解している間違ったコードを投稿しました。 2は、100を返すことによって問題を解決することができれば解決策です。 – LeonardoHAlmeida

+0

1:いいえ、古いバージョンで、またはそこで実行メソッドについて誤解しないようにする必要があるレガシーで。 2:解決策* IF * ...チェックはコメントです – Kukeltje

関連する問題