IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[RichFaces4.2] DataTable dynamique avec mise à jour Ajax


Sujet :

JSF Java

  1. #1
    Membre averti

    Homme Profil pro
    Chargé de projets JEE
    Inscrit en
    Septembre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé de projets JEE
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2002
    Messages : 41
    Points : 317
    Points
    317
    Par défaut [RichFaces4.2] DataTable dynamique avec mise à jour Ajax
    Bonjour à tous,

    J'essaie de faire afficher un rich: DataTable, avec un nombre de colonnes et de lignes variables.

    Voici le use-case:
    Au début, la datatable est vide.
    Puis, grâce à quelques manipulations via l'interface utilisateur, je remplis 2 listes, construites ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<String> tabHeader = new ArrayList<String>();
    List<List<String>> tabDataList = new ArrayList<List<String>>();
    Les listes sont correctement peuplées.

    Ma dernière action met à jour la datatable "table" suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <rich:dataTable value="#{mainController.view.tabDataList}" var="tabTable" id="table">
         <a4j:repeat rowKeyVar="i" value="#{mainController.view.tabHeader}" var="c">   
              <rich:column>
                     <f:facet name="header">
                            <h:outputText value="#{tabHeader}" />
                     </f:facet>
                     <h:outputText value="#{tabTable[i]}" />
                </rich:column>
          </a4j:repeat>
    </rich:dataTable>
    Malheureusement, rien ne s'affiche...

    J'ai essayé avec c:forEach ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <rich:dataTable value="#{mainController.view.tabDataList}" var="dataTable" id="table">
        <c:forEach items="#{mainController.view.tabHeader}" var="c"  varStatus="i">
             <rich:column>
                   <f:facet name="header">
                         <h:outputText value="#{c}" />
                   </f:facet>
                   <h:outputText value="#{dataTable[i.index]}" />
             </rich:column>
        </c:forEach>
    </rich:dataTable>
    Ca fonctionne, mais forEach empêche toute recharge par Ajax (pas la même phase de construction): en effet le nombre de colonnes/lignes ne sera pas modifié en moment du refresh...

    Quelqu'un a-t-il une idée pour me faire afficher cette satanée datatable ?

    Merci d'avance
    Michael

  2. #2
    Membre régulier Avatar de mr1azl
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Points : 107
    Points
    107
    Par défaut
    Pourquoi ne pas passer par les fameux backing bean?

  3. #3
    Membre averti

    Homme Profil pro
    Chargé de projets JEE
    Inscrit en
    Septembre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé de projets JEE
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2002
    Messages : 41
    Points : 317
    Points
    317
    Par défaut
    Bonjour,

    Merci de pencher sur mon problème.
    Peux-tu m'en dire un peu plus ?
    Pourquoi passer par un backing bean alors que le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <a4j:repeat rowKeyVar="idx" value="#{mainController.view.tabHeader}" var="c" >	
    	<h:outputText value="#{c}" />		(<h:outputText value="#{idx}" />)
    </a4j:repeat>
    <br />---------------------------------------<br />
    <a4j:repeat rowKeyVar="idx" value="#{mainController.view.tabDataList}" var="d" >	
    	<a4j:repeat value="#{d}" var="dp" >	
    		<h:outputText value="#{dp}" />
    	</a4j:repeat>
    </a4j:repeat>

    Cdt

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Points : 255
    Points
    255
    Par défaut
    Citation Envoyé par mtranchant Voir le message
    Bonjour,

    Merci de pencher sur mon problème.
    Peux-tu m'en dire un peu plus ?
    Pourquoi passer par un backing bean alors que le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <a4j:repeat rowKeyVar="idx" value="#{mainController.view.tabHeader}" var="c" >	
    	<h:outputText value="#{c}" />		(<h:outputText value="#{idx}" />)
    </a4j:repeat>
    <br />---------------------------------------<br />
    <a4j:repeat rowKeyVar="idx" value="#{mainController.view.tabDataList}" var="d" >	
    	<a4j:repeat value="#{d}" var="dp" >	
    		<h:outputText value="#{dp}" />
    	</a4j:repeat>
    </a4j:repeat>

    Cdt
    Je ne pense pas que ça soit l'imbrication de la balise "a4j:repeat" qui soit problématique mais plutôt le fait de tenter une création dynamique de la balise <rich:column>.

    J'ai déjà rencontré ce genre de problème dans une situation similaire (j'utilisais par contre le framework Primefaces), et je n'ai malheureusement pas trouvé de solution, et j'ai adapté mon projet autrement.

  5. #5
    Membre régulier Avatar de mr1azl
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 77
    Points : 107
    Points
    107
    Par défaut
    Citation Envoyé par N4rc0 Voir le message
    Je ne pense pas que ça soit l'imbrication de la balise "a4j:repeat" qui soit problématique mais plutôt le fait de tenter une création dynamique de la balise <rich:column>.

    J'ai déjà rencontré ce genre de problème dans une situation similaire (j'utilisais par contre le framework Primefaces), et je n'ai malheureusement pas trouvé de solution, et j'ai adapté mon projet autrement.
    On peux créer dynamiquement des <rich:column> mais ça doit être fait pas des <c:forEach > . le problème réside bien dans l'utilisation de a4j:repeat dans une <rich:dataTable>.

  6. #6
    Membre averti

    Homme Profil pro
    Chargé de projets JEE
    Inscrit en
    Septembre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé de projets JEE
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2002
    Messages : 41
    Points : 317
    Points
    317
    Par défaut
    @mr1azl
    Le problème reste que les forEach génèrent le code au moment du build, et ne sera donc pas updatable ensuite (le nombre de colonnes et de lignes resteront fixes).

    @N4rc0
    Avec Primefaces, il y a la balise <p:columns> qui permet la gestion de colonnes à la volée (comme dans richfaces3.3) ça ne fonctionne pas ?
    J'étais à deux doigts de basculer de RF à PF...

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Points : 255
    Points
    255
    Par défaut
    Citation Envoyé par mtranchant Voir le message
    @N4rc0
    Avec Primefaces, il y a la balise <p:columns> qui permet la gestion de colonnes à la volée (comme dans richfaces3.3) ça ne fonctionne pas ?
    J'étais à deux doigts de basculer de RF à PF...
    Peut-être que les versions suivantes ont corrigé ceci, mais à l'époque (si mes souvenirs sont bons, version 3.0.0), non ca ne fonctionnait pas, ou alors j'ai mal interprété mon problème.

  8. #8
    Membre averti

    Homme Profil pro
    Chargé de projets JEE
    Inscrit en
    Septembre 2002
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé de projets JEE
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2002
    Messages : 41
    Points : 317
    Points
    317
    Par défaut
    Bon, bah, je clos le message, même si le problème n'est pas résolu.
    J'ai basculé sur PrimeFaces, marre de ne pas voir les fonctionnalités basiques de RF, pourtant présentes sur la version 3.3.3 ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/11/2013, 11h55
  2. INSERT dynamique avec mise à jour du Resultset
    Par Titounet007 dans le forum JDBC
    Réponses: 2
    Dernier message: 16/10/2009, 11h43
  3. Tutoriel dns avec mise à jour dynamique par dhcp
    Par michelw dans le forum Applications
    Réponses: 2
    Dernier message: 27/11/2008, 10h42
  4. Liste déroulante avec mise à jour champ en dynamique
    Par B-Pascal dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/07/2006, 15h53
  5. Access Problème avec mise à jour données
    Par Yanmeunier dans le forum Access
    Réponses: 2
    Dernier message: 30/03/2006, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo