2013-06-20 72 views
0

我正在寻找一种方法,在提交表单后,从辅助bean中更改primefaces命令按钮的更新属性。我想实现的是根据支持bean方法的结果更新组件ID。更改Primefaces中的更新属性dynamicaly

例如,我想用命令按钮更新表单和咆哮消息,现在如果支持bean发生了一些错误(不是验证错误),我需要只更新咆哮消息和表单不应该更新。

<p:commandButton value="Finish Editing" 
     action="#{editBean.finish}" icon="ui-icon-check" 
     style="width:200px;margin-left:60px;" update=":studentEditForm :messageForm:applyMessages" /> 

回答

3

您可以通过RequestContext#update()使用编程API。

public void finish() { 
    // ... 

    if (someCondition) { 
     RequestContext.getCurrentInstance().update("someClientId"); 
    } else { 
     RequestContext.getCurrentInstance().update("otherClientId"); 
    } 
}    

不要忘记从命令按钮中删除update属性。

+0

你好BalusC,这很好用。 – Krishna

+0

不客气。 – BalusC

-1

更改此

<p:commandButton value="Finish Editing" 
     action="#{editBean.finish}" icon="ui-icon-check" 
     style="width:200px;margin-left:60px;" update=":studentEditForm :messageForm:applyMessages" /> 

<p:commandButton value="Finish Editing" 
     action="#{editBean.finish}" icon="ui-icon-check" 
     style="width:200px;margin-left:60px;" update="#{editBean.updateString}" /> 

现在,你将必须根据需要更新此字符串EditBean类。

+0

你好Makky,它没有工作,无论表单加载时初始化的变量将保留更新参数的值。即使我在表单提交时试图从支持bean中更改该字符串,它从未反映在commandButton的“更新”属性中。 – Krishna

+0

什么是您的managedbean范围> – Makky

+0

Downvoters关心评论。有些人就是在他们心中。 – Makky