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 :

javax.servlet.ServletException: Unable to create managed bean Files


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut javax.servlet.ServletException: Unable to create managed bean Files
    Bonjour tous le monde
    j'utilise Jboss4.2.3GA comme conteneur web et je travail avec le framework JSF ;
    dans le contexte du mon application nommée xmiep3 j'ai crée un arboressence du répétoire et j'ai creé un bean: FileBean qui sert a récuperer les fichiers existant dans cette arboressence:
    mon File beans et le suivant :
    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
     
    public class FileBean {
        private List ProcessedFile;
        private List UnprocessedFile;
     
        public FileBean() {
        }
     
        public List getProcessedFile(){
            if(ProcessedFile==null){
                ProcessedFile =new ArrayList();
                File rep = new File("/Files/BackupDirectory/processed/");
                String[] listfich =rep.list();
                if(listfich.length!=0){
                   for(int i = 0 ; i < listfich.length ; i++){
                      ProcessedFile.add(listfich[i]);                
                   }            
               }
            }
            return ProcessedFile;
        }
        public List getUnprocessedFile(){
            if(UnprocessedFile==null){
                UnprocessedFile =new ArrayList();
                File rep = new File("/Files/BackupDirectory/unprocessed/");
                String[] listfich =rep.list();
                if(listfich.length!=0){
                   for(int i = 0 ; i < listfich.length ; i++){
                      UnprocessedFile.add(listfich[i]);                
                   }            
               }
            }
            return UnprocessedFile;
        }
     
        public void setProcessedFile(List ProcessedFile) {
            this.ProcessedFile = ProcessedFile;
        }
     
        public void setUnprocessedFile(List UnprocessedFile) {
            this.UnprocessedFile = UnprocessedFile;
        }
     
    }
    j'ai déclarer mon Beans dans face-config comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <managed-bean>
            <managed-bean-name>Files</managed-bean-name>
            <managed-bean-class>xmiep3.bean.FileBean</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
            <managed-property>
                <property-name>ProcessedFile</property-name>
                <null-value/>
            </managed-property>
            <managed-property>
                <property-name>UnprocessedFile</property-name>
                <null-value/>
            </managed-property>
        </managed-bean>
    ensuite je veux afficher le contenu du l'arboressence dan une page jsf sous forme d'un DataTable et en voici le code:
    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
     
     <html:dataTable headerClass="headers" width="100%" value="#{Files}"   rowClasses="ligne1,ligne2" >                   
                      <html:column>
                        <core:facet name="header" >
                          <html:outputText value="Nom du fichier"/>    
                        </core:facet>
                        <html:outputText value="#{Files.getFileProcessed}" />
                      </html:column> 
                    </html:dataTable>
                     <html:outputLabel id = "lab5" value=" fichiers xml non traités: "/>  
                    <html:dataTable headerClass="headers" width="100%" value="unprocessed" var="unproc" columnClasses="ligne1,ligne2" >                   
                      <html:column>
                        <core:facet name="header" >
                          <html:outputText value="Nom du fichier "/>    
                        </core:facet>
                        <html:outputText value="#{Files.getFileUnprocessed}" />
                      </html:column> 
                    </html:dataTable>
    lorsque je lance mon application j'obtien l'exception suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    com.sun.faces.mgbean.ManagedBeanCreationException: Unable to create managed bean Files.  The following problems were found:
         - Property ProcessedFile for managed bean Files does not exist.
         - Property UnprocessedFile for managed bean Files does not exist
    ......
    mais j'ai déclarer les proprièté de mon beans
    merci pour votre aide

  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
    primo: tu n'est pas obligé de définir les properties, la définition du bean suffit, c'est EL qui trouve la property du bean.

    Secondo: il ne faut mettre le traitement dans un getter, il est appelé plusieurs fois dans le cyle de la requete JSF.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    Bonjour , merci sniper37 pour ta réponse assez vite ,
    oui effectivement pour le premier point je suis d'acord, j'ai éléminer la déclaration des propriètées dans face-config
    mais pour le deuxieme point ou je dois mettre mon traitement :c'est dans le corps du constructeur ou d'une autre méthode ??
    dans mapage j'ai commis une erreur lors de l'invocation de mon beans
    c'est plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <html:outputText value="#{Files.ProcessedFile}" />
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <html:outputText value="#{Files.UnprocessedFile}" />
    au lieu du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <html:outputText value="#{Files.getFileProcessed}" />
    <html:outputText value="#{Files.getFileUnprocessed}" />
    est ce que vous pouvez m'indiquer la source du l'exception
    merci encore

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    les propriété javabeans commencent par une minuscule, pas un majuscule, ton faces-config deviens donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <managed-bean>
            <managed-bean-name>Files</managed-bean-name>
            <managed-bean-class>xmiep3.bean.FileBean</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
            <managed-property>
                <property-name>processedFile</property-name>
                <null-value/>
            </managed-property>
            <managed-property>
                <property-name>unprocessedFile</property-name>
                <null-value/>
            </managed-property>
        </managed-bean>
    et ton xhtml deviens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <html:outputText value="#{Files.processedFile}" />
    Quand à ton code dans le getter, c'est tout a fait correct comme tu le fait et c'est d'ailleurs la méthode recommandé pour faire une initialisation tardive de certaines propriétés.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    merci tchez pour ton aide
    j'ai tester mon application avec l'exemple suivant:
    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
     
    public class FileBean {
        private List processedFile;
        private List unprocessedFile;
     
        public FileBean() {
        }
     
     
        public List getprocessedFile() {
            if(processedFile==null){
                processedFile =new ArrayList();
               /* File rep = new File("/Files/BackupDirectory/processed/");
                String[] listfich =rep.list();
                if(listfich.length!=0){
                   for(int i = 0 ; i < listfich.length ; i++){
                      processedFile.add(listfich[i]);                
                   }            
               }*/
                String a="chaine1";
                String b="chaine2";
                processedFile.add(a);
                processedFile.add(b);
            }
            return processedFile;
        }
     
        public List getunprocessedFile() {
            if(unprocessedFile==null){
                unprocessedFile =new ArrayList();
               /* File rep = new File("/Files/BackupDirectory/unprocessed/");
                String[] listfich =rep.list();
                if(listfich.length!=0){
                   for(int i = 0 ; i < listfich.length ; i++){
                      unprocessedFile.add(listfich[i]);                
                   }            
               }*/
                 String c="chaine1";
                String d="chaine2";
                unprocessedFile.add(c);
                unprocessedFile.add(d);
            }
            return unprocessedFile;
        }
     
        public void setprocessedFile(List processedFile) {
            this.processedFile = processedFile;
        }
     
        public void setunprocessedFile(List unprocessedFile) {
            this.unprocessedFile = unprocessedFile;
        }
     
    }
    mais dans ma page j'obiens pas chaque chaine sur une seule ligne , j'obtien le couple [chaine1,chaine2] sur la meme colone
    merci

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si tu veux parcourir la liste, il faut utilise des tags comme h:dataTable.

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    merci tchize_
    c'est pas la question du parcour ,
    pour l'exemple precedant j'obteint deux table chaqu'une contient
    ___________________________________________________________
    | fichiers xml traités |
    |___________________________________________________________|
    | [chaine1,chaine2] |
    |___________________________________________________________|

    et moi je veux avoir:
    ___________________________________________________________
    | fichiers xml traités |
    |___________________________________________________________|
    | chaine1 |
    | chaine2 |
    |___________________________________________________________|
    c'est a dire avoir les deux chaines sur deux ligne différentes pas les deux
    merci encore

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par moha_alnif Voir le message
    merci tchize_
    c'est pas la question du parcours
    Si c'en est une. Pour afficher le contenu de ta liste faut la parcourir. Tu peux utiliser h:dataTable ou n'importe quel autre tag jsf non standard faisant du parcours de liste. Quand tu met juste outputText avec ta liste en paramètre, ca fait un simple appel à ArrayList.toString(), méthode sur laquelle tu n'as aucun controle.

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    merci encore tchize_
    okkk j'ai cru que tu parle du parcoure du table(un scroled ou un composant pour parcourir le datatable)
    oui le outputext affiche directemet la liste comme elle est
    et comment faire pour parcourir la cette liste au sein du ma page ?? pour pouvoir inserer chaque objet dans une ligne ?est ce que vous pouvez me renseigner ou je peux trouver des exemple des composants faisant ce parcours
    merci tchize- pour ton aide

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par moha_alnif Voir le message
    et comment faire pour parcourir la cette liste au sein du ma page ??
    avec un h:datatable, par exemple, ou un tomahawk:datalist si tu installe la librairie tomahawk, ou avec un rich:datatable si tu dispose de richfaces.

    Pour les exemples, voir les tutoriaux du site et les FAQs

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    bonjour
    merci tchize_ pour tes réponses ,
    le parcoure du ma liste sera faite dans ma page ; mais j'ai déja utilisé un <htmlataTable> dans ma page :
    et voici le code que j'ai utilisé :
    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
     
     </html:panelGrid>      
                    <html:outputLabel id = "lab4" value=" fichiers xml traités : " styleClass="titre1"/>  
                    <html:dataTable headerClass="headers" width="100%" value="#{Files}"   rowClasses="ligne1,ligne2" >                   
                      <html:column>
                        <core:facet name="header" >
                          <html:outputText value="Nom du fichier"/>    
                        </core:facet>
                        <html:outputText value="#{Files.processedFile}" />
                      </html:column> 
                    </html:dataTable>
                     <html:outputLabel id = "lab5" value=" fichiers xml non traités : " styleClass="titre1"/>  
                    <html:dataTable headerClass="headers" width="100%" value="unprocessed"  columnClasses="ligne1,ligne2" >                   
                      <html:column>
                        <core:facet name="header" >
                          <html:outputText value="Nom du fichier "/>    
                        </core:facet>
                        <html:outputText value="#{Files.unprocessedFile}" />
                      </html:column> 
                    </html:dataTable>
               </html:panelGrid>
    c'est le htmlataTable qui s'occupera du parcours,
    dans mon application je n'utilise que jsf (j'ai pas utilisé ni Tomahawk ni rcihface)
    merci

  12. #12
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 83
    Par défaut
    bonjour
    merci pour votre aide
    j'ai trouver enfin la solution pour lmon dernier problème , j'ai défini un var dans datatable .
    le code correcte est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html:dataTable headerClass="headers" width="100%" value="#{Files.processedFile}"  var="proc" rowClasses="ligne1,ligne2" >                   
                      <html:column>
                        <core:facet name="header" >
                          <html:outputText value="Nom du fichier"/>    
                        </core:facet>
                        <html:outputText value="#{proc}" />
                      </html:column> 
                    </html:dataTable>
    merci encore pour votre aide , abientot

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/11/2011, 15h53
  2. Réponses: 2
    Dernier message: 09/09/2008, 14h24
  3. struts erreur javax.servlet.ServletException
    Par catherine* dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/08/2007, 08h50
  4. Réponses: 7
    Dernier message: 19/07/2006, 14h43
  5. [SERVLET]javax.servlet.ServletException
    Par Devil666 dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 10/06/2005, 11h50

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