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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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
    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 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé 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
    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
    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 ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé 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
    Par défaut
    Bonjour,

    Merci , la 6.2

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

  6. #6
    Membre éclairé 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
    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)

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

Discussions similaires

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

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