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 :

Liste ListShuttle avec Richface


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut Liste ListShuttle avec Richface
    Bonjour à tous, pardon de créer un nouveau post sur ce sujet, je me permets d'exposer mon code et de vous demander si vous pouviez m'aider.

    J'utilise l'élément de richaface listShuttle, dont la démo est ici :

    http://livedemo.exadel.com/richfaces...ttle&tab=usage


    J'ai lu les posts de ce forum portant sur les listShuttle, dont celui ci crée par RomainTaz :

    http://www.developpez.net/forums/d57...me-validation/

    Mon souci est que que je n'arrive pas à utiliser correctement cet élément, plus précisément, à récupérer ce qu'il y a dans la seconde liste.

    Voici la partie de ma page Jsf qui l'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     <rich:listShuttle  targetCaptionLabel="Groupes choisis" sourceCaptionLabel="Groupes disponibles" var="item" sourceValue="#{GroupeListBean.groupesCompetences}" targetValue="#{OrganisationBean.listeGroupes}"  >
     
                 <h:column>
                      <h:outputText     value="#item.nomGroupeCompetence}" /> 
                </h:column>
     
     
    </rich:listShuttle>
    L'utilisateur doit choisir des groupes. La variable groupesCompetences de GroupeListbean est de type List, ainsi que listeGroupes de OrganisationBean.
    C'est dans cette dernière que je souhaite récupérer la liste des groupes sélectionnés.
    L'affichage se déroule bien, donc je pense que le code item.nomGroupeCompetence est correcte, mais l'erreur se produit au clic d'enregistrement : là je dois récupérer la liste des groupes sélectionnés, mais j'ai l'erreur :

    #{item.nomGroupeCompetence}' Property 'nomGroupeCompetence' not found on type java.lang.String

    J'ai mis le lien sur le post de Romaintaz car visiblement c'est un souci de converter, mais je ne vois pas si je dois créer un converter, et ce qu'il doit faire ..

    Merci à tous

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    est ce que groupeCompetences contient le champs nomGroupeCompetence avec ses getter/setter?

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut
    Oui, GroupeCompetence est un bean , défini avec plusieurs attributs, dont nomGroupeCompetence, et il possède bien son getter et son setter.

    Le fait que l'affichage des noms des groupes se passent bien dans la première liste me laisse penser que ce n'est donc pas ce bean qui pose un souci ..
    L'affichage dans la seconde liste marche bien aussi, je vous mets un affichage de ce que j'obtiens en pièce jointe.
    Images attachées Images attachées  

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut
    J'ai crée mon propre converter pour résoudre ce problème qui semble être un souci de conversion Mon Objet / String.

    Donc, je crée ma classe GroupeCompetenceConverter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public class GroupeCompetenceConverter implements Converter {
     
        List<GroupeCompetence> groupsComp ;
     
        public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
            this.groupsComp = process.EquipeDAO.listerEquipes();
     
            for (GroupeCompetence groupeComp : groupsComp) {
                       if (groupeComp.getNomGroupeCompetence().equals(arg2)) {
                           return groupeComp;
                       }
                   }              
                   return null;
        }
     
        public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
            return ((GroupeCompetence) arg2).getNomGroupeCompetence();
     
        }
    }
    Dans mon bean GroupeCompetence, je réecris les méthodes equals et hashcode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Override
    public boolean equals(Object o) {
    		GroupeCompetence d = (GroupeCompetence)o;
    		return d.getNomGroupeCompetence().equals(getNomGroupeCompetence());
    	}
     
    @Override
    public int hashCode() {
             return this.nomGroupeCompetence.hashCode();       
    }
    Sachant que GroupeCompetence a comme attributs numGroupeCompetence, nomGroupeCompetence, de type int et String.

    La page jsf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <rich:listShuttle converter="GroupeCompetenceConverter" id="listeGroupe" immediate="true"   targetCaptionLabel="Groupes choisis" sourceCaptionLabel="Groupes disponibles"  style="left:48px ; top :250px ; position : absolute" var="groupe" sourceValue="#{GroupeCompetenceListBean.groupesCompetences}" targetValue="#{OrganisationBean.listeGroupesCompetence}"  >
                                   <h:column>
                                          <h:outputText value="#{groupe.nomGroupeCompetence}" /> 
                                   </h:column>
                            </rich:listShuttle>
     
                             <rich:message for="listeGroupe" />
    et le faces config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     <converter>
                <display-name>GroupeCompetenceConverter</display-name>
                <converter-for-class>
                    models.GroupeCompetence
                </converter-for-class>
                <converter-class>
                    Converters.GroupeCompetenceConverter
                </converter-class>
            </converter>

    Et là .. toujours une erreur .. mais différente ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Stacktrace:
            at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
            at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
            at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
            at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
            at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
            at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
            at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
            at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
            ... 37 more
    Caused by: javax.faces.FacesException: Erreur dans lexpression: Object nommé GroupeCompetenceConverter ne peut tre trouvé.

    si l'un de vous voyait ce qui fait que il ne trouve pas mon converter ... je pensais pourtant avoir défini correctement ..

    Merci beaucoup

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Par défaut
    Je continue à faire part de l'avancement ..

    en fait je m'étais trompée dans la déclaration de mon converter au sein du faces config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <converter>
     
                <converter-id>GroupeCompetenceConverter</converter-id>            
               <converter-class>Converters.GroupeCompetenceConverter</converter-class>
     
     
            </converter>
    Est la définition qui convient.

    Mais à présent, alors que mon converter est défini, que j'ai redéfinie les méthodes comme décrites dans le post ci dessus, et que j'utilise mon converter j'ai une erreur qui me fait douter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GRAVE: "Servlet.service()" pour la servlet Faces Servlet a généré une exception
    java.lang.ClassCastException: java.lang.String cannot be cast to models.GroupeCompetence
            at Converters.GroupeCompetenceConverter.getAsString(GroupeCompetenceConverter.java:36)
    Donc cela signifie que ma méthode GetAsString , qui doit me renvoyer un String en fonction d'un objet, recoit en fait en paramètre un String !!! :s:s:s

    Pourtant, je passe bien dans mes 2 listes (source et target) des listes d'objets GroupeCompetence ....

    Alors, est ce qu'en fait les listes de listShuttle ne prennent que des listes de SelectItem ?

    Je ne sais plus comment faire, merci de votre aide

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    il y'a deux manières de le faire, les deux sont expliquées dans le
    ici

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

Discussions similaires

  1. liste déroulante avec ajout possible
    Par bachilbouzouk dans le forum ASP
    Réponses: 5
    Dernier message: 19/04/2005, 11h48
  2. liste déroulante avec données mysql
    Par fab44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/02/2005, 19h45
  3. liste deroulante avec plusieurs champs
    Par JulienT dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/04/2004, 17h17
  4. liste déroulante avec session
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 19/03/2004, 11h01
  5. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49

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