2013-04-08 39 views
1

我有一个调用的操作方法和更新等相关UI组件的命令按钮:'Action'方法结束之前是否可以'更新'Ui组件?

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

里面的操作方法,值保存到数据库:

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

是否有可能为update=":form:buttons :dateCommittedText"在项目完成之前更新被保存到数据库?

当前数据库事务处理需要几秒钟的时间,而这一停顿让我的应用程序感觉非常反应迟钝。

回答

4

您可以使用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

+0

谢谢!这正是我所期待的 – Jrokisky 2013-04-08 20:56:29

0

不知道我是否理解,但这是如何从bean更新组件。

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(":componentId"); 
相关问题