2

我有一个命令按钮,它调用一个 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"在项目完成持久化到数据库之前进行更新?

目前数据库事务需要几秒钟,这种暂停让我的应用程序感觉非常迟钝。

4

2 回答 2

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 状态

于 2013-04-08T20:06:00.883 回答
0

不确定我是否理解,但这是您可以从 bean 更新组件的方式。

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(":componentId");
于 2013-04-08T20:05:49.277 回答