Jsf Primefaces进度条实时更新

Jsf Primefaces进度条实时更新,jsf,primefaces,Jsf,Primefaces,我目前正在尝试将进度条合并到我的应用程序中,以显示任务的当前进度。该任务使用web服务从服务器检索文件。我没有访问此web服务的权限,因此无法将任何代码放入其中 我的代码如下: 我需要显示以下项目进度的方法: public URL checkout(String docCid, String fileCid) { String userId="aaaaaa"; FVConnectData fvData = new FVConnectData(); fvData

我目前正在尝试将进度条合并到我的应用程序中,以显示任务的当前进度。该任务使用web服务从服务器检索文件。我没有访问此web服务的权限,因此无法将任何代码放入其中

我的代码如下:

我需要显示以下项目进度的方法:

    public URL checkout(String docCid, String fileCid)
{
    String userId="aaaaaa";


    FVConnectData fvData = new FVConnectData();
    fvData.setWsKeyword("aaaaa");
    fvData.setWsUrl("http://aaaaa.com");
    FVConnector con = new FVConnector(fvData);
    System.out.println("Method checkout called");

    URL url = null;
    try
    {
       //This is where the web service is called
       url = con.checkoutFile(docCid, fileCid, userId, "aaaa", "aaaa", false);
       System.out.println("URL: " + url.toString());


       return url;
    }
    catch (Exception e)
    {

       System.out.println("ERROR: " + e.getMessage());
       e.printStackTrace();

       return null;
    }

}
我的问题是:

如何调整此方法,以便为primefaces GUI提供方法的实时进度,以显示给用户

编辑:


我在网上找到的唯一真实示例使用随机进度显示在进度条上。我不想要这个,我想要真正的(或足够接近的)进步。另外,由于无法访问web服务,我无法确定文件的大小。

为什么不使用
AjaxStatus
。这是我的建议,我认为可以更简单一些。在
签出
未完成之前,您将显示
AjaxStatus
,方法完成为任务后,您可以显示一条消息(错误或成功)。您的意思是代替进度条吗?或者在进度条旁边?我不确定我是否完全理解
AjaxStatus
。据我所知,它有两个属性-开始和完成。因此,我可以设置一条消息来说明流程何时开始,一条消息来说明流程何时完成(无论是成功还是错误),中间没有任何内容。这是正确的吗?@ColdHack如果是这样的话,这并不是我真正想要的,因为在我解决问题之前,我会使用一个BlockUI在加载gif的过程中显示。但是,由于进程的时间因文件大小的不同而变化很大,因此完成进程可能需要很长时间,并且不清楚进程是否正在执行或是否已停止。因此,我一直在寻找一种尽可能多地持续跟踪过程的方法。有什么建议吗?我假设你在
p:commandButton
上调用这个方法,对吗?如果正确,只需添加ajax状态组件,然后在
onStart
属性上调用带有gif图像(可以是gif进度条)的
p:dialog
。在
oncomplete
上,您只需隐藏对话框。