我有一个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"
?
目前数据库事务需要几秒钟,这个暂停使我的应用程序感觉非常无响应。
答案 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");