Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在另一个进度条使用完JSF Primefaces 5.2后启动进度条?_Jsf_Jsf 2_Primefaces_Progress Bar - Fatal编程技术网

如何在另一个进度条使用完JSF Primefaces 5.2后启动进度条?

如何在另一个进度条使用完JSF Primefaces 5.2后启动进度条?,jsf,jsf-2,primefaces,progress-bar,Jsf,Jsf 2,Primefaces,Progress Bar,我是JSF新手,我面临着一些问题,上面的问题就是其中之一,我在任何地方都找不到解决方案 我的场景是: 我有一个进度条列表,每个进度条负责显示方法执行的进度(此方法只包含一个带有Thread.sleep()的for循环来模拟需要一些时间的任务,我将此方法用于所有进度条) 每个进度条都有一个按钮,负责取消任务 还有一个按钮负责启动第一个“任务” 我需要什么: 单击“开始”按钮后,我需要它来启动第一个任务,从而启动第一个进度条。 完成后,必须开始下一个任务,因此需要下一个进度条。 第二个任务完成后,第

我是JSF新手,我面临着一些问题,上面的问题就是其中之一,我在任何地方都找不到解决方案

我的场景是:

  • 我有一个进度条列表,每个进度条负责显示方法执行的进度(此方法只包含一个带有Thread.sleep()的for循环来模拟需要一些时间的任务,我将此方法用于所有进度条)
  • 每个进度条都有一个按钮,负责取消任务
  • 还有一个按钮负责启动第一个“任务”
  • 我需要什么: 单击“开始”按钮后,我需要它来启动第一个任务,从而启动第一个进度条。 完成后,必须开始下一个任务,因此需要下一个进度条。 第二个任务完成后,第三个任务必须开始,因此第三个进度条,依此类推

    问题: 我很难在第一个任务完成后立即开始第二个任务,以此类推。我仍然不知道如何使它工作

    我甚至记不起我试图解决这个问题的方法,所以现在我在这里

    这是我的.xhtml:

    <h:form>
        <br/>
        <p:outputLabel for="botao-iniciar">Iniciar transferências:</p:outputLabel>
        <p:commandButton id="botao-iniciar" onclick="PF('pbAjax-1').start()"
        widgetVar="startButton" value="Iniciar" />
        <br/><br/>
        <p:separator />
    
        <ui:repeat var="transf" value="#{transferenciaStatusMB.listaTransferencia}">
            <h:panelGrid style="width:100%">
                <p:outputLabel>Transferência ID: #{transf.id}</p:outputLabel>
    
                <p:progressBar widgetVar="pbAjax-#{transf.id}" ajax="true" 
                value="#{transferenciaStatusMB.getProgresso(transf)}" 
                labelTemplate="{value}%" global="false" interval="1000" >
                    <p:ajax event="complete" 
                    listener="#{transferenciaStatusMB.onComplete(transf)}" />
                </p:progressBar>
    
                <p:commandButton widgetVar="cancelButton-#{transf.id}" value="Cancelar" 
                actionListener="#{transferenciaStatusMB.cancelar(transf)}"
                oncomplete="PF('cancelButton-#{transf.id}').disable();" >                       
                </p:commandButton>
    
                <p:separator />
            </h:panelGrid>
        </ui:repeat>
    </h:form>
    
    
    
    INCIIAR transferências:

    传输ID:#{transf.ID}
    下面是bean使用的方法:

    // Simulate task (based on the Primefaces' showcase example): 
    public Integer getProgresso(Transferencia transferencia) {
        if(transferencia.getProgresso() == null) {
            transferencia.setProgresso(0);
        } else {
               System.out.printf("Progress Transference ID %d: %d.\n", transferencia.getId(), transferencia.getProgresso());
    
            if(transferencia.getProgresso() < 100){
                transferencia.setProgresso(
                    transferencia.getProgresso() + (int)(Math.random() * 35));
    
                if(transferencia.getProgresso() > 100) {
                    transferencia.setProgresso(100);
                }
            }
    
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        return transferencia.getProgresso();
    }
    
    // Cancel a task:
    public void cancelar(Transferencia transferencia) {
        transferencia.setProgresso(null);
        System.out.println("Transferencia ID " + transferencia.getId() +" CANCELADA!");
    }
    
    // After a task is completed:
    public void onComplete(Transferencia transferencia) {
        System.out.println("Transferencia ID " + transferencia.getId() +" FINALIZADA!");
    }
    
    //模拟任务(基于Primefaces的showcase示例):
    公共整数getProgresso(Transferncia Transferncia){
    if(transferncia.getProgresso()==null){
    移情性进展(0);
    }否则{
    System.out.printf(“进度传输ID%d:%d.\n”,transferencia.getId(),transferencia.getProgresso());
    if(transferncia.getProgresso()<100){
    移情(
    transferncia.getProgresso()+(int)(Math.random()*35));
    如果(transferncia.getProgresso()>100){
    转移性进展(100);
    }
    }
    试一试{
    《睡眠》(2000年);
    }捕捉(中断异常e){
    e、 printStackTrace();
    }
    }
    返回transferncia.getProgresso();
    }
    //取消任务:
    公共无效取消人(Transferncia Transferncia){
    transferncia.setProgresso(空);
    System.out.println(“transferncia ID”+transferncia.getId()+“CANCELADA!”);
    }
    //任务完成后:
    未完成的公共空间(Transferncia Transferncia){
    System.out.println(“transferncia ID”+transferncia.getId()+“FINALIZADA!”);
    }
    
    您应该发布源代码类
    Transferencia.java
    。我不知道引擎盖下面是什么。嗨,@ỗNhưVý!Transferencia.java是一个POJO。您应该发布源代码类
    Transferencia.java
    。我不知道引擎盖下面是什么。嗨,@ỗNhưVý!java是一个POJO。