2012-09-08 27 views
2

比方說我們有按鈕Primefaces組件更新時的commandButton被點擊

<h:form> 
<p:commandButton id="refreshButton" value="refresh all depending components"/> 
</h:form> 

一路上我將添加按鈕被點擊時應該更新的組件的方式。因此使用update =「text1,text2」是不夠的,因爲稍後可能會添加text3,並且不需要更改刷新按鈕。

<h:outputText id="text1" value="{bean.someValue1}></h:outputText> 
<h:outputText id="text2" value="{bean.someValue2}></h:outputText> 

......後來......

<h:outputText id="text3" value="{bean.someValue3}></h:outputText> 

我想要做的就是將組件綁定到該按鈕,而不是依賴於組件按鈕

+0

*「並且不應該要求更改刷新按鈕」*爲什麼沒有?動態是否起作用?如果新文本只是靜態添加,那麼顯然開發人員也有責任更新按鈕。這就是你得到的報酬。 – BalusC

+0

我最初的想法是,我將在視圖中結合不同的UI:構圖。該按鈕不知道哪些組合物存在。但是,猜想我將不得不瞄準組合的父母然後 –

+1

因此,動力學起作用?您是否在EL範圍內收集了一些標識符,用於確定哪些組合物需要包含/顯示?只需在'update'屬性中重複使用即可。 – BalusC

回答

1

我做了AA臨時的quickfix使用

<p:outputPanel autoUpdate="true"> 
    <h:outputText id="text3" ... /> 
<p:outputPanel /> 

猜猜它在性能方面並不完美,因爲它會在所有的Ajax事件進行更新,而不只是那些我有興趣,但幸運的是,這個組件對它們都有興趣,所以它不是問題。

5

什麼你問的是不可能的。至少,不要在視圖中使用標準方式。

但是可能的是引用一個共同的父代。

<p:commandButton ... update="texts" /> 

... 

<h:panelGroup id="texts"> 
    <h:outputText id="text1" ... /> 
    <h:outputText id="text2" ... /> 
    ... 
    <h:outputText id="text3" ... /> 
</h:panelGroup> 

根據具體的功能要求,這是不明確的問題,可能會有更好的解決方案。但如果它歸結爲懶惰和/或避免「忘記」改變按鈕,那麼恐怕沒有魔法修復。

相關問題