2009-12-29 11 views
0

J'ai un riche: dataTable et un riche: dataScroller. Lorsque je clique sur le datascroller, mon dataTable ne s'actualise pas automatiquement pour afficher la bonne page. Si, cependant, j'appuie sur le bouton d'actualisation, la table de données affiche la page correcte.riche: dataScroller ne pas actualiser riche: dataTable dans JSF

Qu'est-ce que je fais mal?

Voici mon code:

<rich:dataTable id="applicantsTable" 
binding="#{applicantListManBean.applicantsDataTable}" 
value="#{applicantListManBean.applicantsList}" var="applicant" 
rows="10" width="650"> 

<h:column> 
    <f:facet name="header"> 
     <h:outputText value="Name" /> 
    </f:facet> 
    <h:outputText value="#{applicant.name}" /> 
</h:column> 

<h:column> 
    <f:facet name="header"> 
     <h:outputText value="Email" /> 
    </f:facet> 
    <h:outputText value="#{applicant.email}" /> 
</h:column> 

<h:column> 

    <f:facet name="header"> 
     <h:outputText value="Action" /> 
    </f:facet> 

    <h:commandLink action="#{applicantListManBean.showApplicantProducts}" 
     rendered="true"> 
     <h:graphicImage value="/images/icons/view.png" width="15" height="15" 
      alt="view" /> 
     <f:setPropertyActionListener 
      target="#{applicantListManBean.tempApplicant}" value="#{applicant}" /> 
    </h:commandLink> 

    <h:commandLink action="#{applicantListManBean.deleteApplicant}" 
     rendered="true"> 
     <h:graphicImage value="/images/icons/delete.png" width="15" 
      height="15" alt="view" /> 
     <f:setPropertyActionListener 
      target="#{applicantListManBean.tempApplicant}" value="#{applicant}" /> 
    </h:commandLink> 

</h:column> 
</rich:dataTable> 

<rich:datascroller id="applicantsScroller" for="applicantsTable" 
reRender="sc1" maxPages="7" page="#{applicantListManBean.scrollerPage}" /> 

MISE À JOUR: erreur Javascript joint: alt text

1: http://imgur.com/132fL.png

Répondre

1

Le problème est le h: commandLink. Cela crée en quelque sorte des problèmes pour les riches: datatable. Utilisez a4j: commandLink ou s: link (si vous utilisez Jboss Seam) à la place.

2

Retirez reRender="sc1". Vous avez copié-collé ceci à partir de la démo RichFaces, mais vous avez supprimé le composant "sc1", ainsi peut-être qu'une erreur javascript se produit qui empêche la mise à jour de la table.

Assurez-vous également que vous avez votre dataTable et datascroller entouré de <h:form>..</h:form> (à la fois sous une forme)

+0

je l'ai enlevé, mais pas de chance ... –

+1

voir votre firefox javascript console pour toute erreur js et leur donne ici – Bozho

+0

Merci, voir ci-joint . –

0

Mettez l'ID pour rich:datatable et reRender dans rich:datascroller comme indiqué ci-dessous. Cela fonctionne pour moi:

<f:view> 
    <a4j:keepAlive beanName="datosCtrlBean" ajaxOnly="true"/> 
    <h:form> 
     <rich:dataTable reRender="sc2" width="300" id="carList" rows="10" columnClasses="col" 
          value="#{datosCtrlBean.datos}" var="category" id="myTable" > 

       <f:facet name="header"> 
        <rich:columnGroup> 
         <h:column> 
          <h:outputText styleClass="headerText" value="Make" /> 
         </h:column> 
        </rich:columnGroup> 
       </f:facet> 
       <h:column> 
        <h:outputText value="#{category}" /> 
       </h:column> 
       <f:facet name="footer"> 
       <rich:datascroller align="left" for="carList" id="sc2" ajaxSingle="true" reRender="myTable" limitToList="myTable"/> 
       </f:facet> 
      </rich:dataTable> 
    </h:form> 
</f:view> 
1

Vous pouvez envisager d'utiliser la balise t: saveState ou placer le gestionnaire dans la portée de session. La raison pour laquelle cela se produit probablement est que vous avez votre gestionnaire dans la portée de la demande et que le commandLink est une autre requête, il ne peut pas trouver l'instance de gestionnaire d'origine à publier. En ayant simplement ce saveState ici, le mien a commencé à travailler.

Juste une idée.

+0

J'ai déjà répondu à la question. –

0

est faux ..

essayer:

<rich:dataTable width="300" id="carList" rows="10" columnClasses="col" 
         value="#{datosCtrlBean.datos}" var="category" > 


      <rich:datascroller align="left" for="carList" id="sc2" ajaxSingle="true" reRender="carList" limitToList="carList"/> 
+0

Bienvenue sur SO! Pour les visiteurs qui pourraient venir en cherchant la réponse à cette question, pourriez-vous développer un peu et expliquer _why_ on devrait essayer cela? – Kryten

Questions connexes