2012-01-19 38 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