2010-04-22 4 views
1

Voici un exemple riche: dataTable avec un a4j: commandLink à l'intérieur. Quand on clique dessus, il envoie une requête AJAX à mon bean et renvoie le dataTable.Pourquoi une sous-table casse-t-elle a4j: reRender de commandLink?

<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> 

Le obove de exmaple fonctionne très bien jusqu'à présent. Mais quand j'ajoute une riche: Soustable (regroupant les voitures par un garage par exemple) à la table, ne ... nouveau rendu

<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> 

Maintenant les riches: dataTable est pas mais le nouveau rendu élément est supprimé depuis le L'élément n'apparaît pas après une actualisation manuelle de la page.

Pourquoi le sous-tableau interrompt-il le support pour reRender-ing?

Tanks Tom

+0

peut être un bug. Vérifiez la console Javascript dans Firefox – Bozho

+0

Vérifié cela. La réponse est une table dans les deux cas (w/et w/o subTable) mais avec subTable il semble renvoyer l'ancienne table. Peut-être une sorte de problème de mise en cache. En tout cas la mise en cache est désactivée dans Firefox. – Tom

Répondre

1

il est apparu que Hibernate ne met pas à jour la liste des modèles connexes.

Après avoir retiré la voiture à l'aide de carManager d'AppFuse, la voiture supprimée figurait toujours dans la liste getCars() du garage associé [lors de la réception des garages en utilisant garageManager.getAll()].

Donc le problème n'était pas lié à richfaces lui-même!

Actuellement j'utilise une solution de contournement (en supprimant les éléments manuellement lors de la réception des données du modèle associé oO) mais peut-être que j'ouvrirai une nouvelle question pour résoudre ce problème.

Questions connexes