方法执行期间更新视图

时间:2014-10-08 16:54:44

标签: jsf jsf-2 primefaces jsf-2.2

我一直在努力解决这个问题,现在的情况是:我有一个方法执行一个非常长的操作,需要几分钟才能执行,这个方法是由commandButton触发的,所以当用户点击它我想开始(实时)向他展示一些关于应用程序正在做什么的信息。

这是我到目前为止所做的:

managedBean:

@ManagedBean
@ViewScoped
public class Mbean implements Serializable {

    public String message;

    public void startLongProcess(ActionEvent ev) {

        step1();
        message = "step 1 finished!";
        RequestContext.getCurrentInstance().update("msg");

        step2();
        message = "step 2 finished!";
        RequestContext.getCurrentInstance().update("msg");

        step3();
        message = "step 3 finished!";
        RequestContext.getCurrentInstance().update("msg");

    }
    ...
}

XHTML:

<p:commandButton actionListener="#{mbean.startLongProcess}" ajax="true" />
<h:panelGroup id="msg">
    <h:outputText value="#{mbean.message}" />
</h:panelGroup>

在此示例中,我执行了3步操作,在完成每个步骤后显示不同的消息,问题是在方法执行期间消息未在视图上更新,更新仅发生在整个过程结束了。

有谁知道如何让它实时更新?

0 个答案:

没有答案