是否有可能更新'在' Action'之前的Ui组件方法完了?

时间:2013-04-08 19:36:14

标签: jsf primefaces

我有一个Command Button来调用Action方法并更新其他相关的UI组件:

<p:commandButton  value="Commit" action="#{controller.persist}" process="@this" update=":form:buttons :dateCommittedText" />

在Action方法中,值保存在数据库中:

public void persist() {
    databaseService.save(some item);
    status = "Committed";
}

是否可以在项目持久保存到数据库之前更新update=":form:buttons :dateCommittedText"

目前数据库事务需要几秒钟,这个暂停使我的应用程序感觉非常无响应。

2 个答案:

答案 0 :(得分:5)

您可以使用p:remoteCommand

<p:commandButton  value="Commit" action="#{controller.onlyMinorChanges}" 
    process="@this" update=":form:buttons :dateCommittedText" 
    onsuccess="doAfter()"/>

<p:remoteCommand name="doAfter" action="#{controller.persist}"/>  

在你的bean中:

public void onlyMinorChanges() {
    status = "Committed";
}

public void persist() {
    databaseService.save(some item);
}

相依:

关于没有反应,请看一下这个AJAX Status

答案 1 :(得分:0)

不确定我是否理解,但这是你如何从bean更新组件。

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(":componentId");