2016-04-11 15 views
0

Abbrechen der progressBar Anruf nach Freigabe 100%? Ich habe versucht, dies zu tun:Stop Anruf mit progressBar Primefaces

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

Oder die PF('progress').cancel(); nennen, aber ohne Erfolg. Folgen Sie meinem 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

Also was ** passiert **? Was ist, wenn Sie nur einen Alarm anzeigen, funktioniert das? Wo hast du versucht, den 'PF '(Fortschritt) zu nennen? Cancel();'? – Kukeltje

+0

Ich rufe einen 'p: -Dialog' an und blende den Dialog ein. Sobald es 100% erreicht, ruft er den getPorcentagem an. – lss

Antwort

0

Der folgende Code funktioniert für den Fortschrittsbalken. Der Fortschrittsbalken stoppt bei 100 und getProgress() wird nicht erneut aufgerufen. Die onComplete() wird einmal der Integer Fortschritt genannt gleich 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> 

Managed Bean

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; 
    } 

} 

Ausgabe

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

+2

Einige Erklärungen im Text könnten vorhanden sein – Kukeltje

+0

Warum funktioniert der unten stehende Code noch besser ... Was sind wichtige Unterschiede? Warum nehmen Sie an, dass es in der Frage nicht genannt wurde? Das sind die Dinge, die in einer Antwort am wichtigsten sind (jemand lernt zu fischen statt Fisch zu geben) – Kukeltje

-1
  1. Der untenstehende Code stoppt nicht progressBar

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

da die richtige Art und Weise

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

auf den doJs() Methode.

  1. Überprüfen Sie, ob getPorcentagem 100 mindestens einmal zurückgibt. Wenn dies geschieht, stoppt der Fortschritt automatisch.
+0

Bitte lesen Sie die Frage noch einmal. OP hat "1" versucht. Dann ist 2 zunächst nur ein Kommentar – Kukeltje

+0

DH gepostet einen falschen Code, der das Missverständnis der Verwendung von execute() -Methode und primefaces Widgets zeigt. 2 ist eine Lösung, wenn er es schafft, das Problem zu lösen, indem er 100 zurückgibt. – LeonardoHAlmeida

+0

1: nein, in älteren Versionen oder mit dem Vermächtnis, das funktionieren sollte ... kein Missverständnis über die Ausführungsmethode dort. 2: Lösung * IF * ... so die Überprüfung ist ein Kommentar – Kukeltje