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 :

erreur de recuperation de donne avec jsf


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut erreur de recuperation de donne avec jsf
    salut,

    mon but est d'afficher sous forme de liste deroulante des donnes qui sont envoyer a partir d'un managed bean

    pour le cette class

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    public class Recuperation
    {
     SAXBuilder sxb=new SAXBuilder();
    	                List<String> listeNomParser=new ArrayList<String>();
    	       Document document=sxb.build(new File("basexml/Testvrai.xml"));
    	            Element societes=document.getRootElement();
    	            List<Element> soc=societes.getChildren();
     
     
    	                        for(Element societe:soc){
     
     
    	                String nom=societe.getChild("nom").getText();
    	                                listeNomParser.add(nom);
     
     
     
     
     
     
    	}
     
     
     
     
    							return listeNomParser;
     
     
    	}
     
     
     
    }
    ce code de récupération de liste de String à partir de fichier .xml est juste

    donc on s'intéresse uniquement au résultat récupérer c a dire list<String>


    pour la page web je fait ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <h:selectOneMenu >
    				<f:selectItem itemLabel="#{Recuperation.getDatas}" itemValue="#{RecuperationgetDatas}" />
     
     
     
    			</h:selectOneMenu>





    mais elle m'affiche comme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    javax.servlet.ServletException: /ListDeroulantevrai.xhtml @36,97 itemLabel="#{Recuperation.getDatas}": Property 'getDatas' not found on type org.Recuperation
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 65
    Par défaut
    La liste que tu veux récupérer devrait s'appeller "datas" et pouvoir être accédée par un getDatas() et un setDatas(...)

    Dans ta vue du peux référéncer ta liste ainsi du coup :
    Dans ce cas tu devrais utiliser :
    au lieu de

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci pour la reponse

    je fait quelques changement

    la class Recuperation est
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    public calss Recuperation
    {
     
    private String nom1;
    private List<String> datas=new ArrayList<String>();
     
     
    public List<String> getDatas() throws Exception{
    	 SAXBuilder sxb=new SAXBuilder();
    	                List<String> listeNomParser=new ArrayList<String>();
    	       Document document=sxb.build(new File("basexml/Testvrai.xml"));
    	            Element societes=document.getRootElement();
    	            List<Element> soc=societes.getChildren();
     
     
    	                        for(Element societe:soc){
     
     
    	                String nom=societe.getChild("nom").getText();
    	                                listeNomParser.add(nom);
     
     
     
     
     
     
    	}
     
     
    	                        datas=listeNomParser;
     
     
    							return datas;
     
     
    	}
     
     
     
     
     
    public void setDatas(List<String> datas) {
    	this.datas = datas;
    }
     
     
     
    public void setNom1(String nom1) {
    	this.nom1 = nom1;
    }
     
     
     
     
     
     
     
     
     
     
     
    public String getNom1() {
     
    	nom1="test";
    	return nom1;
    }
     
     
     
     
     
     
    }
    et pour la page web

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <h:selectOneMenu value="#{Recuperation.nom1}">
    				<f:selectItems itemLabel="#{Recuperation.datas}" value="#{Recuperation.datas}" />
     
     
     
    			</h:selectOneMenu>



    lors de l'execution l'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    javax.servlet.ServletException: /ListDeroulantevrai.xhtml @36,92 value="#{Recuperation.datas}": Error reading 'datas' on type org.Recuperation
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    si je fait de cette maniere

    il m'affcihe comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    javax.servlet.ServletException: PermGen space
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     
     
    cause mère

    le code de page web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <h:selectOneMenu >
    				<f:selectItems itemLabel="#{Recuperation.datas}" itemValue="#{Recuperation.datas}" />
     
     
     
    			</h:selectOneMenu>

    pourtant si je fait de cette maniere il m'affiche une liste deroulante contient deux fois la valeur "test"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    <h:selectOneMenu >
    				<f:selectItems itemLabel="#{Recuperation.nom1}" itemValue="#{Recuperation.nom1}" />
     
    			<f:selectItems itemLabel="#{Recuperation.nom1}" itemValue="#{Recuperation.nom1}" />
     
     
    			</h:selectOneMenu>

    donc le problemme est comment recuperer une liste de String et l'afficher dans la liste deroulante
    mais n'oubli pas que le code qui retourne qui fait parser le fichier .xml est correcte

    le problemme est quant dans la class Recuperation quand je rempli une liste peu n'importe quel contenu il y'a toujours problème pour afficher son contenu dans une liste deroulante

    donc le problème est au niveau de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <f:selectItems itemLabel="#{Recuperation.datas}" itemValue="#{Recuperation.datas}" />

  5. #5
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    hello,

    perso je dirais que tu es en train de melanger selectitem et selectitems :

    selectitem :
    http://www.jsftoolbox.com/documentat...electItem.html

    selectitems :
    http://www.jsftoolbox.com/documentat...lectItems.html

    Un dernier conseil ne met pas de code dans tes GETTER SETTER.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    désole si ,j'insiste pour le même question

    je consulte votre document et j'essaye de plusieurs manieres

    un parmi des cas que j'ai testé est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:selectOneMenu value="#{Recuperation.nom1}">
    				<f:selectItem itemLabel="#{Recuperation.datas}" itemValue="#{Recuperation.datas}"></f:selectItem>
     
    			</h:selectOneMenu>
    mais l'erreurs est
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    javax.servlet.ServletException: L'exécution de la servlet a lancé une exception
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     
     
    cause mère 
     
    java.lang.OutOfMemoryError: PermGen space
    	java.lang.ClassLoader.defineClass1(Native Method)
    	java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    	java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    	org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1814)
    	org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
    	org.jboss.web.tomcat.service.WebAppClassLoader.findClass(WebAppClassLoader.java:139)
    	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
    	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    	com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:228)
    	com.sun.facelets.compiler.Compiler.compile(Compiler.java:104)
    	com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:192)
    	com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:141)
    	com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:93)
    	com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:503)
    	com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:553)
    	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
    	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
    	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

  7. #7
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    cf FAQ : http://javaweb.developpez.com/faq/js...TS_selectItems

    selectitem n'accepte pas liste.

    et selectitems accepte une liste de selectitem
    donc votre code doit ressembler a ca :

    selectedItem : l'item selctionné
    datas : une liste de selectItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:selectOneMenu value="#{Recuperation.selectedItem}">
    <f:selectItems value="#{Recuperation.datas}"</f:selectItems>
    </h:selectOneMenu>

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    j'essaye avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:selectOneMenu value="#{Recuperation.selectItem}" >
    			<f:selectItems value="#{Recuperation.selectItems}"/>
    			</h:selectOneMenu>
    et pour la class Recuperation

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
     
    public calss Recuperation
    {
     
    private  List<String> selectItems=new ArrayList<String>();
     
     
    public void setSelectItems(List<String> selectItems) {
    	this.selectItems = selectItems;
    }
     
     
     
    public List<String> getSelectItems() throws Exception{
     
    		List<String> selectedItems = new ArrayList<String>();
     
    		 SAXBuilder sxb=new SAXBuilder();
     
    Document document=sxb.build(new File("Testvrai.xml"));
         Element societes=document.getRootElement();
         List<Element> soc=societes.getChildren();
     
     
                     for(Element societe:soc){
     
     
             String nom=societe.getChild("nom").getText();
             selectedItems .add(nom);
     
     
     
     
     
     
    }
     
     
     
     
     
    				return selectedItems;
     
    			}
     
     
     
    }

    mais il m'affiche comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    javax.servlet.ServletException: /ListDeroulantevrai.xhtml @36,59 value="#{Recuperation.selectItems}": Error reading 'selectItems' on type org.Recuperation
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     
     
    cause mère

  9. #9
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Ta méthode doit retourner une List<SelectItem>, pas une List<String> (et inutile de fournir un setter pour ça)
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    le but est d'afficher une liste déroulante qui contient les noms de sociétés qui sont récupéré de fichier Testvrai.xml

    c pour cela je retourne list de String

    mais pour votre ca je n'arrive pas a comprendre le type SelectItem

    et si possible pouvez m'aidez à corriger le code de la class Recuperation

  11. #11
    Membre confirmé Avatar de koack
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 60
    Par défaut
    Un peu d'efforts serait le bien venu quant même ...

    Votre code devrait ressembler a quelque chose comme ca

    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
    22
    23
    24
     
    public class Recuperation
    {
     
    private  List<SelectItem> selectItems=new ArrayList<SelectItem>();
     
    public Recuperation() {
     
    		 SAXBuilder sxb=new SAXBuilder();
             Document document=sxb.build(new File("Testvrai.xml"));
             Element societes=document.getRootElement();
             List<Element> soc=societes.getChildren();
             for(Element societe:soc){
            	 String nom=societe.getChild("nom").getText();
            	 SelectItem selectItem = new SelectItem();
            	 selectItem.setLabel(nom);
            	 selectItems.add(selectItem);
             }
     
    }
     
    public List<SelectItem> getSelectItems(){
    	return selectItems;
    }

  12. #12
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Une liste déroulante en HTML, c'est un ensemble d'<option>. Une option est tout simplement un couple (clé, label).
    Le SelectItem, en JSF, est l'objet Java qui correspond à cela. Ainsi, c'est simplement un objet qui contient un couple (id, label).

    Tu as une liste de sociétés à faire afficher. Donc il te suffit de créer une liste contenant des SelectItem, où la clé est l'ID technique (qui te permettra de savoir quel est le choix fait par l'utilisateur), et le label est tout simplement le nom affiché à l'utilisateur.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

Discussions similaires

  1. erreur de mise a jour avec jsf et ajax
    Par hermannteussido dans le forum JSF
    Réponses: 0
    Dernier message: 10/04/2015, 13h53
  2. Erreur connexion base de données avec script ANT
    Par doons dans le forum Hibernate
    Réponses: 0
    Dernier message: 18/03/2015, 16h57
  3. Recuperer des données avec return
    Par osmanab dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 12/05/2010, 08h43
  4. Réponses: 13
    Dernier message: 19/07/2006, 14h28
  5. utilisation de base de donnée avec JSF
    Par kedare dans le forum JSF
    Réponses: 1
    Dernier message: 16/05/2006, 17h03

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