2012-01-19 37 views
1
<p:outputPanel> 
    <h:selectOneRadio value="#{myBean.favColor1}"> 
    <f:selectItem itemValue="Red" itemLabel="Color1 - Red" /> 
    <f:selectItem itemValue="Green" itemLabel="Color1 - Green" /> 
    <f:selectItem itemValue="Blue" itemLabel="Color1 - Blue" /> 
    </h:selectOneRadio> 
    <p:ajax update="picker,#{myBean.clientId}"/> 
</p:outputPanel> 

我需要更新一个组件,其ID是以编程方式生成的。如何更新从后台bean生成的ID

回答

2

客户端ID应该以默认的命名容器分隔符:作为前缀,以便它将被绝对解析为UIViewRoot而不是相对于父命名容器(这将适用于组件ID,但不适用于客户端ID) 。

<p:ajax update="picker,:#{myBean.clientId}"/> 

作为一个完全不同的替代方案(我发现结合客户端ID到后台bean漂亮发痒),只需结合的组件视图和引用它,而不是通过中介托管bean。

<h:someComponent binding="#{foo}" /> 
... 

<p:ajax update="picker,:#{foo.clientId}"/> 
+0

谢谢,单独工作很好,但打破了其他自动完成组件。我需要弄清楚。 – Ravi

+0

不客气。是的,这是一个完全不同的问题。如果你喜欢,请随时提出一个新问题。 – BalusC

+0

BalusC,我已经混合了你对这个问题的两个答案(http://stackoverflow.com/questions/8797287/is-conditional-rendering-of-components-possible-inside-datatable-without-updatin/8957536# 8957536)。请发表您对解决方案的看法。谢谢! – Ravi