2012-08-23 38 views
3

我有一個jsf 2.0頁面,其中有一個<p:dataTable>,在這個表裏面有一個<p:commandButton>,它應該用ajax請求從這個表中刪除一個項目。刪除本身工作正常,但我不知道如何識別周圍<p:dataTable>爲渲染update如何在jsf中解決周圍的命名容器?

<lots of naming containers> 
... 
    <p:dataTable id="dataTable" var="userItem" ... /> 
    <p:column> 

     <p:commandButton 
      action="#{userController.doDelete(userItem.id)}" 
      value="delete" 
      update="?????"/> <!-- How to address the dateTable? --> 

    </p:column> 
    </p:dataTable> 
<.lots of naming containers> 

我已經tryed update="dataTable"但鑽嘴魚科沒有找到它

所以我的問題是如何解決周邊命名容器(編輯它沒有爲其他原因工作)沒有使用以根UIComponent開頭的絕對路徑(因爲那時我需要命名很多命名容器。)

回答

3

假設您擁有一個表格中的所有內容,其中包含prependId="false"作爲屬性,那麼更新屬性值dataTable應該工作。

子組件的PrimeFaces更新屬性識別父數據表組件的標識。此外,您還可以使用PrimeFaces更新中的@parent值重新渲染子元素直接父容器。

+0

你說得對,dataTable出了問題。 - 我忽略了列中的命名容器(我簡化了發佈的代碼) - 謝謝你的回答,因爲它讓我再次查看代碼。 – Ralph

+0

我再次陷入相關問題,也許你可以幫助我:http://stackoverflow.com/questions/12090950/how-to-access-the-parent-naming-container-of-composite – Ralph