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 :

[PrimeFaces] - fileDownload


Sujet :

JSF Java

  1. #1
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut [PrimeFaces] - fileDownload
    Bonjour,

    je suis parti de l'exemple : https://www.primefaces.org/showcase/...download.xhtml

    et l'ai integré dans mon environnement :

    bean :
    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
     
    ...
    ...
     
    	private StreamedContent fileXML;
    ...
    ...
    ...
    ...
    ...
     
    	private void CreationFichier() {
    		String pFichier = "C:\\Data\\eclipse-workspace\\calcultoric\\WebContent\\img\\xml\\" + getIdFichier() + ".xml";
    		EcrireXML f = new EcrireXML(pFichier);
    		f.run(this);
    		InputStream stream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(pFichier);
    		fileXML = new DefaultStreamedContent(stream, "application/txt", pFichier);
    	}
    ...
    ...
    ...
    ...
    	public StreamedContent getFileXML() {
    		MyLog4j.logger.debug("getFileXML");
                    return fileXML;
            }
     
    }
    le fichier XML est bien créé

    et dans ma page :
    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
     
    <p:dialog modal="true" widgetVar="statusDialog" header="Status" draggable="false" closable="false" resizable="false">
      <h:outputText for="wait"  value="merci de patienter..."/>
    </p:dialog>
    ...  
    ...
    <p:commandButton value="Imprimer" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop);" >
            <p:fileDownload value="#{calculForm.fileXML}" />
      </p:commandButton>
    ...
    ...
    ...
    <script type="text/javascript">
    function start() {
        PF('statusDialog').show();
    }
     
    function stop() {
        PF('statusDialog').hide();
    }
    </script>
    et voila l'erreur levée dans la console, apparement dans le getFileXML:
    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
    mai 30, 2018 3:31:17 PM com.sun.faces.context.ExceptionHandlerImpl log
    1100: JSF1073 : javax.faces.FacesException intercepté durant le traitement de INVOKE_APPLICATION 5 : UIComponent-ClientId=, Message=null
    mai 30, 2018 3:31:17 PM com.sun.faces.context.ExceptionHandlerImpl log
    1100: No associated message
    javax.faces.FacesException
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.NullPointerException
    	at org.primefaces.component.filedownload.FileDownloadActionListener.processAction(FileDownloadActionListener.java:90)
    	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    	at javax.faces.component.UIData.broadcast(UIData.java:1108)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    	... 25 more
    merci pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    En se référant aux sources de Primefaces 6.2.4, l'erreur concerne l'inputStream.
    Dans ton cas, je ne serais pas surpris que fileXML soit null mais vu que je ne sais ni comment, ni quand ta méthode de création est appelée...

    Peux-tu mettre plus de code et le scope du managedBean également ?

  3. #3
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Bonjour,

    merci pour ta reponse.

    le bean est assez gros c'est pour cela que je n'ai mis que les partis pour le fichier XML, il est managed sur la session.

    j'ai ajouté ça sur le getFileXML(), ça me loggue "not null"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public StreamedContent getFileXML() {
    		if (fileXML!=null) {
    			MyLog4j.logger.debug("not null");
    		}else {
    			MyLog4j.logger.debug("null");
    		}
    		return fileXML;
        }

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    La ligne 90 est celle que j'ai mis en rouge, ça n'a pas l'air de coller avec ton problème.
    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
    ...
    public void processAction(ActionEvent actionEvent) throws AbortProcessingException {
            FacesContext context = FacesContext.getCurrentInstance();
            ELContext elContext = context.getELContext();
            StreamedContent content = (StreamedContent) value.getValue(elContext);
    
            if (content == null) {
                return;
            }
    
            ExternalContext externalContext = context.getExternalContext();
            String contentDispositionValue = contentDisposition != null ? (String) contentDisposition.getValue(elContext) : "attachment";
            String monitorKeyValue = monitorKey != null ? "_" + (String) monitorKey.getValue(elContext) : "";
    
            InputStream inputStream = null;
    
            try {
                externalContext.setResponseContentType(content.getContentType());
                externalContext.setResponseHeader("Content-Disposition", ComponentUtils.createContentDisposition(contentDispositionValue, content.getName()));
                externalContext.addResponseCookie(Constants.DOWNLOAD_COOKIE + monitorKeyValue, "true", Collections.<String, Object>emptyMap());
    
                if (content.getContentLength() != null) {
                    externalContext.setResponseContentLength(content.getContentLength().intValue());
                }
    
                if (RequestContext.getCurrentInstance(context).isSecure()) {
                    externalContext.setResponseHeader("Cache-Control", "public");
                    externalContext.setResponseHeader("Pragma", "public");
                }
    
                byte[] buffer = new byte[2048];
                int length;
                inputStream = content.getStream();
                OutputStream outputStream = externalContext.getResponseOutputStream();
    
                while ((length = (inputStream.read(buffer))) != -1) {
                    outputStream.write(buffer, 0, length);
                }
    
                externalContext.setResponseStatus(200);
                externalContext.responseFlushBuffer();
                context.responseComplete();
            }
            catch (IOException e) {
                throw new FacesException(e);
            }
            finally {
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    }
                    catch (IOException e) {
                        // ignore
                    }
                }
            }
        }
    ...
    Quelle version de Primefaces utilises-tu ?

  5. #5
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Bonjour,

    Merci , la 6.2

    Ok, mais pourquoi il n'a pas l'air null ?

  6. #6
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Petite test :

    Si je mets {ajax="true"}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <f:facet name="footer">
    								<p:commandButton value="Imprimer" ajax="true" >
            							<p:fileDownload value="#{calculForm.fileXML}" />
        							</p:commandButton>
     
    					        </f:facet>
    j'ai dans le log :

    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
    juin 12, 2018 10:24:41 AM org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet [Faces Servlet] a généré une exception
    java.lang.IllegalStateException: "getOutputStream()" a déjà été appelé pour cette réponse
    	at org.apache.catalina.connector.Response.getWriter(Response.java:625)
    	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211)
    	at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:847)
    	at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:504)
    	at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:79)
    	at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:642)
    	at javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:120)
    	at org.primefaces.context.PrimePartialResponseWriter.startDocument(PrimePartialResponseWriter.java:109)
    	at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:201)
    	at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:126)
    	at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:100)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Unknown Source)

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code de EcrireXML ?

  8. #8
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Oui, bien sur, mais le fichier est bien cree et lisible.
    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    package com.site.outil;
     
    import javax.xml.parsers.*; 
    import org.w3c.dom.*;
     
    import com.site.MyLog4j;
    import com.site.forms.calcul.CalculForm;
     
    import javax.xml.transform.*; 
    import javax.xml.transform.dom.*; 
    import javax.xml.transform.stream.*; 
    import java.io.*;
    import java.text.SimpleDateFormat;
    import java.util.Date; 
     
    public class EcrireXML{
     
    	private String fichier;
     
    	public EcrireXML() {
    	}
     
    	public EcrireXML(String f) {
    		this.fichier=f;
    	}
     
     
    	public void run(CalculForm fc) {
    		try{
    			// Création d'un nouveau DOM
    			MyLog4j.logger.debug("EcrireXML-run");
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
    			Document document = constructeur.newDocument();
     
    			// Propriétés du DOM
    			document.setXmlVersion("1.0");
    			document.setXmlStandalone(true);
     
    			// Création de l'arborescence du DOM
    			Element racine = document.createElement("root");
    			racine.appendChild(document.createComment("creer par calcultoric"));
     
    			Element calcul = document.createElement("calcul");
     
    			Element id = document.createElement("id");
    			id.setTextContent(generationName());
     
    			Element medecin = document.createElement("nomMedecin");
    			medecin.setTextContent(fc.getNomMedecin());
     
    			Element patient = document.createElement("nomPatient");
    			patient.setTextContent(fc.getNomPatient());			
     
    			Element infopatient = document.createElement("infoPatient");
    			infopatient.setTextContent(fc.getInfoPatient());	
     
    			Element oeilpatient = document.createElement("oeilPatient");
    			oeilpatient.setTextContent(fc.getOeil());	
     
     
    			Element unitesK = document.createElement("unitesK");
    			unitesK.setTextContent(String.valueOf(fc.getUnitesK()));	
     
    			Element indiceK = document.createElement("indiceK");
    			unitesK.setTextContent(String.valueOf(fc.getIndiceK()));	
     
    			Element kPlat = document.createElement("kPlat");
    			kPlat.setTextContent(String.valueOf(fc.getkPlat()));	
     
    			Element kPlatM = document.createElement("kPlatM");
    			kPlatM.setTextContent(String.valueOf(fc.getkPlatM()));	
     
    			Element axePlat = document.createElement("axePlat");
    			axePlat.setTextContent(String.valueOf(fc.getAxePlat()));	
     
    			Element kCambre = document.createElement("kCambre");
    			kCambre.setTextContent(String.valueOf(fc.getkCambre()));	
     
    			Element kCambreM = document.createElement("kCambreM");
    			kCambreM.setTextContent(String.valueOf(fc.getkCambreM()));	
     
    			Element axeCambre = document.createElement("axeCambre");
    			axeCambre.setTextContent(String.valueOf(fc.getAxeCambre()));	
     
    			Element aic = document.createElement("AIC");
    			aic.setTextContent(String.valueOf(fc.getAIC()));	
     
    			Element LI = document.createElement("LI");
    			LI.setTextContent(String.valueOf(fc.getLI()));
     
    			Element plio = document.createElement("plio");
    			plio.setTextContent(String.valueOf(fc.getpIOL()));
     
    			Element imageAxe = document.createElement("imageAxe");
    			plio.setTextContent(fc.getFichierAxeNoir());
     
    			Element imageImplant = document.createElement("imageImplant");
    			plio.setTextContent(fc.getFichierImplantNoir());
     
    			Element logoSociete = document.createElement("logoSociete");
    			plio.setTextContent("logo-header-dark.png");
     
    			racine.appendChild(calcul);
    			racine.appendChild(logoSociete);
     
    			calcul.appendChild(id);
    			calcul.appendChild(medecin);
    			calcul.appendChild(patient);
    			calcul.appendChild(infopatient);
    			calcul.appendChild(oeilpatient);
    			calcul.appendChild(unitesK);
    			calcul.appendChild(kPlat);
    			calcul.appendChild(kPlatM);
    			calcul.appendChild(axePlat);
    			calcul.appendChild(kCambre);
    			calcul.appendChild(kCambreM);
    			calcul.appendChild(axeCambre);
    			calcul.appendChild(aic);
    			calcul.appendChild(LI);
    			calcul.appendChild(plio);
    			calcul.appendChild(imageAxe);
    			calcul.appendChild(imageImplant);
     
     
    			document.appendChild(racine);
     
    			//Sauvegarde du DOM dans un fichier XML
    			transformerXml(document);
     
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
     
     
        private   String generationName() {
        	Date now = new Date();
        	SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        	String parsed;
    		parsed = format.format(now) ;
    		return parsed;
        }
     
    	private void transformerXml(Document document) {
            try {
                // Création de la source DOM
                Source source = new DOMSource(document);
     
                // Création du fichier de sortie
                File file = new File(fichier);
                Result resultat = new StreamResult(fichier);
     
                // Configuration du transformer
                TransformerFactory fabrique = TransformerFactory.newInstance();
                Transformer transformer = fabrique.newTransformer();
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
     
                // Transformation
                transformer.transform(source, resultat);
     
            }catch(Exception e){
            	e.printStackTrace();	
            }
        }
    }

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas quelle bibliothèque tu utilises pour l'écriture du fichier XML mais on dirait que ça se passe comme si ton fichier était vide au moment où tu récupères le stream.
    C'est peut-être lié à une action asynchrone côté écriture... je ne sais pas trop...
    Tu peux déjà essayer de temporiser entre l'appel de run() la récupération du stream pour voir si on est sur la bonne piste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    f.run(this);
    
    // temporisation ici avec Thread.sleep(30000); par exemple
    
    InputStream stream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(pFichier);
    fileXML = new DefaultStreamedContent(stream, "application/txt", pFichier);

  10. #10
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Merci pour ton temps.

    avec le "sleep", mais toujours la même erreur

    j'ai essayé avec un fichier existant (cree avant) en dur dans le code, c'est pareil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InputStream stream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("C:\\Data\\eclipse-workspace\\calcultoric\\WebContent\\img\\oeil\\xml\\20180619151848738P.xml");
    		fileXML = new DefaultStreamedContent(stream, "application/txt", "C:\\Data\\eclipse-workspace\\calcultoric\\WebContent\\img\\oeil\\xml\\20180619151848738P.xml");

    Essayé aussi avec un ficher texte, meme resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InputStream stream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("C:\\temps\\test.txt");
    		fileXML = new DefaultStreamedContent(stream, "application/txt", "C:\\temps\\test.txt");

    un dernier test, que le fichier existe ou pas, j'ai la meme erreur !

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Bon, j'ai fait un test sur la base de la version 6.2.4 de Primefaces et ça fonctionne...
    Ci-dessous, le code utilisé :

    Manager
    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
    @ManagedBean(name="testManager")
    @SessionScoped
    public class TestManager extends AbstractManager
    {
        private static final long serialVersionUID = 1;
     
        public StreamedContent getFile()
        {
            try
            {
                InputStream stream = new FileInputStream("c:\\Temp\\data.txt");
                return new DefaultStreamedContent(stream, "text/plain", "Pwd");
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            return null;
        }
     
        public void setFile(StreamedContent file)
        {
            this.file = file;
        }
    }
    Appel dans la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
            <p:commandButton value="Télécharger" ajax="false">
                <p:fileDownload value="#{testManager.file}"/>
            </p:commandButton>
    ...
    Peux-tu tester (adapte le code) ?

  12. #12
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    ça fonctionne nickel !
    mille mercis


    par contre pourquoi l'exemple ne fonctionne pas ?

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il faudrait voir du côté des logs javascript dans ton cas, il y avait peut-être un problème.
    Le texte que tu as mis dans le dialogue est suspect, l'attribut for="wait" m'interpelle

  14. #14
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Le texte que tu as mis dans le dialogue est suspect, l'attribut for="wait" m'interpelle
    Il me semble avoir fait un copier/coller de l'exemple.

    enfin, merci

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 29/12/2010, 23h52
  2. debuter avec primefaces
    Par riadhhwajdii dans le forum JSF
    Réponses: 0
    Dernier message: 17/08/2009, 11h35
  3. integrer primefaces avec richfaces
    Par riadhhwajdii dans le forum JSF
    Réponses: 2
    Dernier message: 13/08/2009, 18h34
  4. PrimeFaces linechart erreur
    Par rajensias dans le forum JSF
    Réponses: 2
    Dernier message: 16/04/2009, 11h30
  5. [servlet] FileDownload java
    Par salber dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/06/2004, 16h59

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