2010-04-22 70 views
1

這是一個最小的rich:dataTable示例,裏面有一個a4j:commandLink。點擊後,它向我的bean發送一個AJAX請求,並重新發送dataTable。爲什麼子表打破a4j:commandLink的reRender?

<rich:dataTable id="dataTable" value="#{carManager.all}" var="item"> 
    <rich:column> 
     <f:facet name="header">name</f:facet> 
     <h:outputText value="#{item.name}" /> 
    </rich:column> 
    <rich:column> 
     <f:facet name="header">action</f:facet> 
     <a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}"> 
       <f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" /> 
       <f:param name="from" value="list" /> 
     </a4j:commandLink> 
    </rich:column> 
</rich:dataTable> 

的〔實施例obove 至今工作正常。但是,當我添加了豐富的:子表(由車庫例如分組汽車)表,重新渲染失敗...

<rich:dataTable id="dataTable" value="#{garageManager.all}" var="garage"> 
    <f:facet name="header"> 
     <rich:columnGroup> 
      <rich:column>name</rich:column> 
      <rich:column>action</rich:column> 
     </rich:columnGroup> 
    </f:facet> 

    <rich:column colspan="2"> 
     <h:outputText value="#{garage.name}" /> 
    </rich:column> 

    <rich:subTable value="#{garage.cars}" var="car"> 
     <rich:column><h:ouputText value="#{car.name}" /></rich:column> 
     <rich:column> 
      <a4j:commandLink reRender="dataTable" value="Delete" action="#{carForm.delete}"> 
        <f:setPropertyActionListener value="#{item.id}" target="#{carForm.id}" /> 
        <f:param name="from" value="list" /> 
      </a4j:commandLink> 
     </rich:column> 
    </rich:column> 
</rich:dataTable> 

現在富:數據表上不重新呈現但由於該項目被刪除項目在手動頁面刷新後不顯示。

爲什麼subTable在這裏中斷reRender的支持?

坦克湯姆

+0

可能是一個錯誤。檢查在Firefox控制檯控制檯 – Bozho 2010-04-22 13:00:04

+0

檢查。響應是兩種情況下的表(w /和w/o子表),但有了子表後,它似乎再次發送舊錶。可能是某種緩存問題。無論如何緩存在Firefox中被禁用。 – Tom 2010-04-22 13:35:55

回答

1

原來的Hibernate沒有更新相關模型的列表。

在使用AppFuse的carManager刪除汽車後,刪除的汽車仍然顯示在相關車庫的getCars()列表中[當使用garageManager.getAll()接收車庫時)。

所以問題不是有關richfaces本身!

目前我正在使用一種解決方法(從相關模型oO接收數據時手動刪除項目),但也許我會打開一個新問題來解決此問題。

相關問題