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 :

Problème image et p:upload


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut Problème image et p:upload
    Bonsoir,

    Je suis entrain de développer un petit exemple sur comment on upload une image.
    Mon problème c'est que lorsque je clique sur le button de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:fileUpload id="photo" value="#{adminCtr.produit.photo}" mode="simple">
    j' upload l'image et je stock seulement le nom de l'image au niveau base de donnée(au niveau managed bean) mais je veux maintenant au niveau que j'ai terminé l'upload je stock l'image courante dans un dossier qui existe dans mon pc et j'ai pas trouvé comment faire sachant que mon attribut photo et de type String.s'il vous plait est-ce que quelqu'un a une idée?
    Merci

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Et voilà un petit peu de lecture : http://www.java-tutorial.ch/java-ser...ith-primefaces

    tu vois qu'il y a un point clé important : il faut mettre enctype="multipart/form-data" dans ton tag h:form

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Au fait j'ai réussi à faire le truc mais avec mode="advanced" si je change le mode vers "simple" rien ne se passe .

  4. #4
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut,

    montre ton formulaire en entier et ton ManagedBean.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:p="http://primefaces.org/ui">
     
     
    <h:head>
    	<title>Nouveau Produit</title>
    </h:head>
     
     
    <body>
    	<h:form id="form1" enctype="multipart/form-data">
    <p:panel id="panel2" style="position:absolute; top:480px; width:97.8%">
    			<f:facet name="header">
    				<h:outputLabel value="Informations Produit" style="left:200px" />
    			</f:facet>
     
    			<h:panelGrid columns="3" cellspacing="10">
     
    				<h:outputLabel for="caracteristiques"
    					value="Spécificité &nbsp;&nbsp;&nbsp;" />
    				<p:inputTextarea rows="5" cols="50" id="caracteristiques" s
    					value="#{adminCtr.produit.caracteristiques}" required="true" label="Caractéristiques"
    					validatorMessage="La taille doit contenir au moin 40 caractères"
    					requiredMessage="Vous devez saisir les caractèristiques du produit">
    					<f:validateLength minimum="40" maximum="3000" />
    					<p:ajax update="carac" event="blur" />
    				</p:inputTextarea>
    				<p:message id="carac" for="caracteristiques"></p:message>
     
     
    				<h:outputLabel for="description"
    					value="Description &nbsp;&nbsp;&nbsp;" />
    				<p:inputTextarea rows="5" cols="50" id="description"
    					value="#{adminCtr.produit.description}" required="true" label="Description"
    					validatorMessage="La taille doit contenir au moin 40 caractères"
    					requiredMessage="Vous devez saisir une description du produit">
    					<f:validateLength minimum="40" maximum="3000" />
    					<p:ajax update="desc" event="blur" />
    				</p:inputTextarea>
    				<p:message id="desc" for="description"></p:message>
     
    				<h:outputLabel for="photo" value="Photo &nbsp;&nbsp;&nbsp;" />
    				<p:fileUpload mode="advanced" id="photo" 
    					fileUploadListener="#{adminCtr.handleFileUpload}" 
    					allowTypes="/(\.|\/)(gif|jpg|jpeg|gif|png|PNG|GIF|JPG|JPEG)$/"
    					auto="true" />
    				<p:message id="msg" for="photo"></p:message>
     
    			</h:panelGrid>
    			<p:commandButton value="Enregistrer" action="#{adminCtr.saveProduit}" update="form1"></p:commandButton>
     
    		</p:panel>
    </h:form>
    </body>
    </html>
    et mon managed bean 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
     
    public class AdminCtr {
     
    private static FileUploadEvent even;
    	private static final int BUFFER_SIZE = 6124;
    //Récuperer le nom de la photo
    	public void handleFileUpload(FileUploadEvent event) {
    		produit.setPhoto(event.getFile().getFileName());
    		even=event;	
    	}
     
    //Ajouter un Nouveau Produit
    	public String saveProduit(){
     
    		    File result = new File("C:\\env_dev\\Site_Web_De_Vente_En_Ligne\\WebContent\\images\\"+produit.getPhoto());
    	        System.out.println(result.getAbsolutePath());    
    	        try {
    	            FileOutputStream fileOutputStream = new FileOutputStream(result);
    	            byte[] buffer = new byte[BUFFER_SIZE];
    	            int bulk;
    	            InputStream inputStream = even.getFile().getInputstream();
    	            while(true){
    	                bulk = inputStream.read(buffer);
    	                if (bulk < 0){
    	                    break;
    	                }
    	                fileOutputStream.write(buffer,0,bulk);
    	                fileOutputStream.flush();
    	            }
    	            fileOutputStream.close();
    	            inputStream.close();
    	            FacesMessage msg = new FacesMessage("File Description", "file name: " + produit.getPhoto() );
    	        } catch(IOException e){
    	            e.printStackTrace();
    	            FacesMessage error = new FacesMessage(FacesMessage.SEVERITY_ERROR, " the files were not uploaded!", "");
    	            FacesContext.getCurrentInstance().addMessage(null, error);
    	        }	
    		    .....
    Au fait ce code marche avec mode="advanced" et lorsque je change me mode="simple" ça marche pas ça me retourne une exception .

    Merci

  6. #6
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    et l'exception, tu peux donner la StackTrace ?

  7. #7
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Déjà, tu ne dois plus utiliser p:ajax mais f:ajax.
    Attention toutefois quand tu vas changer, le nom des événements change un peu (blur devient onBlur si je me souviens bien).

    Essaye de faire fonctionner en mode simple avec juste un composant p:fileUpload dans le formulaire et rien d'autres ... et quand ça marche tu peux commencer à mettre d'autres composants de saisie.

    Il faut procéder par étape.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    Déjà, tu ne dois plus utiliser p:ajax mais f:ajax.
    Attention toutefois quand tu vas changer, le nom des événements change un peu (blur devient onBlur si je me souviens bien).

    Essaye de faire fonctionner en mode simple avec juste un composant p:fileUpload dans le formulaire et rien d'autres ... et quand ça marche tu peux commencer à mettre d'autres composants de saisie.

    Il faut procéder par étape.
    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
    C:\env_dev\Site_Web_De_Vente_En_Ligne\WebContent\images\null
    26 mars 2013 21:25:36 com.sun.faces.lifecycle.InvokeApplicationPhase execute
    ATTENTION: #{adminCtr.saveProduit}: java.lang.NullPointerException
    javax.faces.FacesException: #{adminCtr.saveProduit}: java.lang.NullPointerException
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
    	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    	... 22 more
    Caused by: java.lang.NullPointerException
    	at com.controller.AdminCtr.saveProduit(AdminCtr.java:239)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    	... 23 more
    ça c'est l'erreur quand j'utilise mode="simple" sinon p:ajax elle marche à merveille elle me fait le blur pourquoi devrais-je la changer?Sinon l'erreur la voilà
    Merci

  9. #9
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Citation Envoyé par ahmedpa Voir le message
    sinon p:ajax elle marche à merveille elle me fait le blur pourquoi devrais-je la changer?Sinon l'erreur la voilà
    Merci

    parce que sur le site de PrimeFaces 3 ils te conseillent de ne plus l'utiliser et d'utiliser f:ajax à la place. C'est l'auteur qui le dit.

  10. #10
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    As-tu essayé "par étapes" comme je te l'ai suggéré plus haut ?

    En développement, pour trouver la solution à un problème, il faut isoler les concepts. Si tu ajoutes de la complexité à ton formulaire tu auras sûrement du mal à trouver (effets de bords divers).

    peux-tu mettre aussi le code COMPLET de ton ManagedBean car il y a des portions qui manquent ... la variable "produit" par exemple où est-elle déclarée. Et plus particulièrement, quelle est la ligne 239 ? car ta StackTrace indique ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NullPointerException at com.controller.AdminCtr.saveProduit(AdminCtr.java:239)
    Pourquoi ton "FileUploadEvent" est en static : c'est une erreur !
    Quel est le scope de ton ManagedBean ?

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Au fait pas tellement de chose jsute j'ai oublié de mettre le produit=new Produit.
    sinon la ligne 237 pointe sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	            InputStream inputStream = even.getFile().getInputstream();

  12. #12
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    donc c'est "even" qui est null.

    sauf que la StackTrace dit "239" pas "237".

    Tu veux vraiment pas montrer ton ManagedBean en entier ?
    Tu veux vraiment tester JUSTE l'upload sans autres composants de saisie ?
    Tu veux vraiment pas me dire quel est le scope de ton ManagedBean ?

    Sans ces éléments je ne peux plus t'aider.

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    donc c'est "even" qui est null.

    sauf que la StackTrace dit "239" pas "237".

    Tu veux vraiment pas montrer ton ManagedBean en entier ?
    Tu veux vraiment tester JUSTE l'upload sans autres composants de saisie ?
    Tu veux vraiment pas me dire quel est le scope de ton ManagedBean ?

    Sans ces éléments je ne peux plus t'aider.
    Oui au fait je me suis trompé de la ligne mais c'est ça l'erreur sinon j'ai oublié de vous dire que je veux tester upload avec mode="simple" le scope de mon managedbean est session et enfin pour le managedbean est celui çi

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    package com.controller;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
    import javax.annotation.PostConstruct;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ManagedProperty;
    import javax.faces.bean.RequestScoped;
    import javax.faces.context.FacesContext;
     
    import org.primefaces.event.FileUploadEvent;
    import org.springframework.dao.DataAccessException;
     
     
     
    public class AdminCtr {
     
    	// ***********************************Déclaration Des Attributs*************************************************
     
    	//Traitement D'image
    	private static FileUploadEvent even;
    	private static final int BUFFER_SIZE = 6124;
     
    	Produit produit=new Produit();
    	ProduitIbusiness produitBuss;
     
     
    	// **********************************************************************************************************
     
    	//Récuperer le nom de la photo
    	public void handleFileUpload(FileUploadEvent event) {
    		produit.setPhoto(event.getFile().getFileName());
    		even=event;	
    	}
     
    	//Ajouter un Nouveau Produit
    	public String saveProduit(){
     
    		    File result = new File("C:\\env_dev\\Site_Web_De_Vente_En_Ligne\\WebContent\\images\\"+produit.getPhoto());
    	        System.out.println(result.getAbsolutePath());    
    	        try {
    	            FileOutputStream fileOutputStream = new FileOutputStream(result);
    	            byte[] buffer = new byte[BUFFER_SIZE];
    	            int bulk;
    	            InputStream inputStream = even.getFile().getInputstream();
    	            while(true){
    	                bulk = inputStream.read(buffer);
    	                if (bulk < 0){
    	                    break;
    	                }
    	                fileOutputStream.write(buffer,0,bulk);
    	                fileOutputStream.flush();
    	            }
    	            fileOutputStream.close();
    	            inputStream.close();
    	            FacesMessage msg = new FacesMessage("File Description", "file name: " + produit.getPhoto() );
    	        } catch(IOException e){
    	            e.printStackTrace();
    	            FacesMessage error = new FacesMessage(FacesMessage.SEVERITY_ERROR, " the files were not uploaded!", "");
    	            FacesContext.getCurrentInstance().addMessage(null, error);
    	        }	
     
    		try{
    		    Date date=new Date();    
    			produit.setNouveautes("oui");
    			produit.setDateProduit(date);
    			produitBuss.ajouterProduit(produit);
    			produit=new Produit();
    			return"success";
     
    		}catch(DataAccessException e){
    			e.printStackTrace();
    			return"fail";
    		}
    	}
     
     
     
    	public static FileUploadEvent getEven() {
    		return even;
    	}
    	public Produit getProduit() {
    		return produit;
    	}
    	public void setProduit(Produit produit) {
    		this.produit = produit;
    	}
    	public ProduitIbusiness getProduitBuss() {
    		return produitBuss;
    	}
    	public void setProduitBuss(ProduitIbusiness produitBuss) {
    		this.produitBuss = produitBuss;
    	}
    	public static void setEven(FileUploadEvent even) {
    		AdminCtr.even = even;
    	}
    	public static int getBufferSize() {
    		return BUFFER_SIZE;
    	}
     
    }

  14. #14
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Voici un exemple complet, issu d'un d'un de mes projets et qui fonctionne pour un upload en mode "simple" :

    Le formulaire JSF :

    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
    <h:form id="formulaire" enctype="multipart/form-data" acceptcharset="ISO-8859-1">
        <h:panelGrid columns="3">    
            <p:outputLabel value="Nom" for="inputNom" />
            <p:inputText id="inputNom" value="#{indexPageBean.nom}"    required="true" />
            <p:message id="messageNom" for="inputNom" showSummary="true" showDetail="false" />
     
            <p:outputLabel value="Prénom" for="inputPrenom" />
            <p:inputText id="inputPrenom" value="#{indexPageBean.prenom}" />    
        </h:panelGrid>
     
        <p:fileUpload value="#{indexPageBean.file}" mode="simple" />
     
        <p:commandButton value="Inscrire" 
                         actionListener="#{indexPageBean.inscrirePersonnel()}"
                         update="@form" />
     
    </h:form>
    Le managedbean JSF :

    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
    @ManagedBean
    public class IndexPageBean
    {
        private String nom;
        private String prenom;
        private UploadedFile file;
     
        public UploadedFile getFile()
        {
            return file;
        }
     
        public void setFile(UploadedFile file)
        {
            this.file = file;
        }
     
        public String getNom()
        {
            return nom;
        }
     
        public void setNom(String nom)
        {
            this.nom = nom;
        }
     
        public String getPrenom()
        {
            return prenom;
        }
     
        public void setPrenom(String prenom)
        {
            this.prenom = prenom;
        }
     
        public void inscrirePersonnel()
        {
            System.out.println("Inscription ...");
     
            Personnel p = new Personnel();
            p.setNom(nom);
            p.setPrenom(prenom);
     
            try
            {
                    // utilisation de la classe utilitaire IOUtils de Apache Commons IO
                byte[] data = IOUtils.toByteArray(file.getInputstream());
                p.setFichierPdf(data);
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
     
            // ici enregistrer l'instance de Personnel : p
     
     
            FacesMessage message = new FacesMessage("Enregistrement OK", "La personne a été enregistrée");
            FacesContext.getCurrentInstance().addMessage(null, message);
     
        }

  15. #15
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Merci

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

Discussions similaires

  1. [PHP 5.1] probléme image uploadée
    Par hanitax dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2013, 11h04
  2. [CKEditor] Probléme insertion style et upload image
    Par klack dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 30/11/2009, 16h12
  3. [CKEditor] Problème bizarre avec l'upload d'images
    Par Jorael dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 19/12/2007, 15h41
  4. [Image]Vérifier taille image lors d'upload FTP
    Par MiJack dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 10/09/2004, 01h10

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