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 :

Richfaces avec uploadFile


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut Richfaces avec uploadFile
    Salut,

    J'ai ajouté dans ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <f:view>
                <h:form>
                    <rich:fileUpload  />
                </h:form>
            </f:view>
    ça fonctionne très bien, mais une fois que le fichier est ajouter (Done) je n'arrive pas à retrouver le fichier ajouter.

    J'ai recherché tous le disque dure, sans rien trouvé.

    Pouvez-vous me dire qu'est ce qui manque?!

  2. #2
    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
    c'est bien, tu upload tes fichiers dans le vide. Il manque le paramètre contenant les valuebinding pointant sur la propriété devant stocker les fichiers.

    uploadData Collection of files uploaded
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:fileUpload uploadData="#{bean.data}"/>

  3. #3
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Merci pour l'info,
    Je vais chercher dans ce sens.

    Peux-tu stp me donner un exemple?

  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
    je viens de t'en donner un il me semble....

  5. #5
    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
    et la démo de richfaces contient beaucoup d'exemples
    .

  6. #6
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    La démo est bien intéressante, je l'ai même consulté avant de commancer mes tests, mais sur le site d'EXADEL il n'y pas d'exemples de backingBean.

    tchize_
    je viens de t'en donner un il me semble....
    Pouvez vous stp me donner un exemple d'implémentation de :

    uploadData Collection of files uploaded

  7. #7
    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
    c'est simplement une liste avec des getter/setter, la liste contient des objet de type UploadItem.

  8. #8
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Au moment du téléchargement, j'ai l'erreur suivante qui s'affiche sur la page web : Transfer error occuried

    Voilà ce que j'ai implémenter dans mon ManagedBean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private UploadItem uploadItem;
    public UploadItem getUploadItem() {
            return uploadItem;
    }
     
    public void setUploadItem(UploadItem uploadItem) {
            this.uploadItem = uploadItem;
    }
    public void listener(UploadEvent event) throws IOException {
            uploadItem = event.getUploadItem();
            String filename = uploadItem.getFileName();
            System.out.println(filename);
    }
    et ma page jsp est la suivante:
    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
    <%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
     
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h2>Nouveau fichier ACB</h2>
            <f:view>
                <h:form>
                    <rich:fileUpload fileUploadListener="#{monbean.listner}"  />
                </h:form>
            </f:view>
     
        </body>
    </html>
    une partie des exceptions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    javax.el.MethodNotFoundException: Method not found: hicham.ews.AcbFiles@baa0.listner(org.richfaces.event.UploadEvent)
    javax.faces.el.MethodNotFoundException: javax.el.MethodNotFoundException: Method not found: hicham.ews.AcbFiles@baa0.listner(org.richfaces.event.UploadEvent)
            at org.richfaces.webapp.taglib.MethodBindingMethodExpressionAdaptor.invoke(MethodBindingMethodExpressionAdaptor.java:54)
            at org.richfaces.component.UIFileUpload.broadcast(UIFileUpload.java:158)
            at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:317)
            at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:290)
            at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:249)
            at org.ajax4jsf.component.AjaxViewRoot.processDecodes(AjaxViewRoot.java:405)
            at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:101)
            at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    une partie de faces-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <managed-bean>
            <managed-bean-name>monbean</managed-bean-name>
            <managed-bean-class>MonBean</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>

  9. #9
    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
    faut lire tes exceptions

    ton erreur est là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileUploadListener="{MonBean.listener}"

  10. #10
    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
    et lire les réponses aussi

    avec une liste de uploadItem, utilise le paramètre uploadData.

    dans le bean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private List data;
     
    //getter/setter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <rich:fileUpload uploadData="#{MonBean.data}"  />

    je pense que c'est assez clair..

  11. #11
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    ça marche!!!
    Merci beaucoup.

    Je n'est changé que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fileUploadeListener="#{MonBean.listener}"
    et ça a marché.

    et puisque je ne suis qu'un débutant, puis-je savoir à quoi sert le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:fileUpload uploadData="#{MonBean.data}"  />

  12. #12
    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
    c'est une autre façon de récupérer les données, la première le fait traite les fichier à chaque upload avec la mthode du listener, la deuxième prend l'ensemble des fichiers dans une liste.

  13. #13
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Merci Sniper37 pour l'info.

  14. #14
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Me revoilà avec une nouvelle question sur le même sujet :

    J'ai modifié ma fonction listener comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String listener(UploadEvent event) throws IOException {
            uploadItem = event.getUploadItem();
            maListe= MaStaticClass.maFonctionStatic(uploadItem.getFile());
            list.setWrappedData(maListe);
            return "ok";
        }
    La fonction renvoi un String "ok" et j'ai ajouté dans faces-config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <navigation-rule>
            <from-view-id>/upload.jsp</from-view-id>
            <navigation-case>
                <from-outcome>ok</from-outcome>
                <to-view-id>/affichagedonnes.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
    Le résultat est que la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaStaticClass.maFonctionStatic(uploadItem.getFile())
    s'exécute correctement mais la redirection vers la nouvelle page /affichagedonnes.jsp ne s'éffectue pas!!!

    Pouvez-vous me dire svp ce que j'ai manqué?

  15. #15
    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
    le listener est de type void,garde la fonction comme avant et ajoute dans rich:fileUpload:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:support event="onuploadcomplete" action="ok"/>

  16. #16
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Encore une fois merci Sniper37.

    La solution que tu m'as proposé marche très bien.

    Cela dit, j'aimerai bien savoir pourquoi n'est-il pas possible d'utiliser l'attribut : onuploadcomplete de fileUpload?

  17. #17
    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
    la navigation se fait qu'avec des composants de contrôle, comme h:button, en générale avec le paramètre action, a4j:support est un composant de contrôle qui envoie une requete ajax.
    tu peux utiliser onuploadComplete parceque ce n'est pas fait pour tout simplement. regarde la documentation pour voir à quoi ça sert.

  18. #18
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Merci Sniper37

  19. #19
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    J'ai encore besoin d'aide.

    Depuis hier, j'essaie d'enregistrer le fichier téléchargé dans un dossier sous la racine mais sans succès!!

    Je connais le chemin en cours grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FacesContext context = FacesContext.getCurrentInstance();
    String path = context.getExternalContext().getRequestServletPath()
    J'ai bien récupéré le fichier téléchargé grâce à mon listner implémenter comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.File file = event.getUploadItem().getFile();
    Pouvez-vous me dire comment enregistrer file dans path + "/myfiles" ?

  20. #20
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Enfin j'ai trouvé la solution suivante

    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
    public void saveFile(File file, String path, String fileName) {
    try {
                BufferedReader in = new BufferedReader(new FileReader(file));
                FileWriter fstream = new FileWriter(fileName);
                BufferedWriter out = new BufferedWriter(fstream);
                while ((ligne = in.readLine()) != null) {
                    out.write(ligne);
                    out.newLine();
                }
                in.close();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    }
    J'ai encore 2 questions:
    1. Est ce qu'il y a un autre moyen plus simple d'enregistrer le fichier téléchargé?

    2. J'utilise glassfish et je retrouve le fichier enregistré par cette méthode dans le dossier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Program Files\glassfish-v2ur2\domains\domain1\config
    alors que je m'attendais à le retrouver sur la racine de mon site!!

    Que pouvez-vous me dire sur ces deux points?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme d'integration de richfaces avec jsf 1.1
    Par lakhdharani dans le forum JSF
    Réponses: 9
    Dernier message: 27/04/2009, 15h01
  2. Intégration RichFaces avec JSF
    Par demanghonj dans le forum JSF
    Réponses: 11
    Dernier message: 24/04/2009, 11h20
  3. Réponses: 1
    Dernier message: 12/05/2008, 12h14
  4. Utiliser RichFaces avec JSF 1.2
    Par Dimitri_87 dans le forum JSF
    Réponses: 3
    Dernier message: 02/04/2008, 17h07
  5. Réponses: 9
    Dernier message: 24/01/2008, 08h35

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