[richfaces-issues] [JBoss JIRA] (RF-13647) File Download throws exception

Brian Leathem (JIRA) issues at jboss.org
Tue May 27 18:01:58 EDT 2014


     [ https://issues.jboss.org/browse/RF-13647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brian Leathem updated RF-13647:
-------------------------------

    Steps to Reproduce: 
Here's my code from xhtml

{code}
<h:commandLink action="#{campaignBean.campaignDownload()}"  value="#{ifn:translate('Excel File')}"/>
{code}

Backing bean code

{code}
 public void campaignDownload() throws Exception {

        File f= new File(logDir + fileName);
        /* This is an Omnifaces Utility which will simply gives the file to browser. I tried that but it didn't work either
        	 The same code works fine in 4.3.5 Final and 4.3.4 Final.
        	 http://stackoverflow.com/questions/9391838/how-to-stream-a-file-download-in-a-jsf-backing-bean
        */
        //Faces.sendFile(f,true);
        
        
        try {
            FacesContext context = FacesContext.getCurrentInstance();
            
            /* Code that reads content from file and store it in object */
            IBinaryContentProvider binaryContentProvider = dfAction.getBinaryContentProvider();

            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
            response.setContentType(binaryContentProvider.getContentMIMEType());
            response.setHeader("Content-Disposition", "attachment; filename="
                    + binaryContentProvider.getDownloadFilename());
            ServletOutputStream ouputStream = response.getOutputStream();
            while (binaryContentProvider.hasMoreChunks()) {
                byte[] bytes = binaryContentProvider.getNextChunk();
                // it is ok to have 0 bytes
                if (bytes != null && bytes.length > 0) {
                    ouputStream.write(bytes);
                }
            }
        } catch (Exception ex) {
            logger.error(Level.SEVERE, "Exception : " + ex);
        } finally {
            FacesContext.getCurrentInstance().responseComplete();
        }
    }
{code}


  was:
Here's my code from xhtml

<h:commandLink action="#{campaignBean.campaignDownload()}"  value="#{ifn:translate('Excel File')}"/>

Backing bean code

 public void campaignDownload() throws Exception {

        File f= new File(logDir + fileName);
        /* This is an Omnifaces Utility which will simply gives the file to browser. I tried that but it didn't work either
        	 The same code works fine in 4.3.5 Final and 4.3.4 Final.
        	 http://stackoverflow.com/questions/9391838/how-to-stream-a-file-download-in-a-jsf-backing-bean
        */
        //Faces.sendFile(f,true);
        
        
        try {
            FacesContext context = FacesContext.getCurrentInstance();
            
            /* Code that reads content from file and store it in object */
            IBinaryContentProvider binaryContentProvider = dfAction.getBinaryContentProvider();

            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
            response.setContentType(binaryContentProvider.getContentMIMEType());
            response.setHeader("Content-Disposition", "attachment; filename="
                    + binaryContentProvider.getDownloadFilename());
            ServletOutputStream ouputStream = response.getOutputStream();
            while (binaryContentProvider.hasMoreChunks()) {
                byte[] bytes = binaryContentProvider.getNextChunk();
                // it is ok to have 0 bytes
                if (bytes != null && bytes.length > 0) {
                    ouputStream.write(bytes);
                }
            }
        } catch (Exception ex) {
            logger.error(Level.SEVERE, "Exception : " + ex);
        } finally {
            FacesContext.getCurrentInstance().responseComplete();
        }
    }





> File Download throws exception
> ------------------------------
>
>                 Key: RF-13647
>                 URL: https://issues.jboss.org/browse/RF-13647
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: core
>    Affects Versions: 4.3.6
>         Environment: Richfaces 4.3.6 Final.
> Mojarra - 2.1.28
> Weblogic 12.1.2
> Windows 7
>            Reporter: santhosh siravuri
>            Priority: Critical
>
> File download action throws below exception.
> ]] Root cause of ServletException.
> java.lang.NullPointerException
>         at org.richfaces.renderkit.AjaxCommandRendererBase.isSubmitted(AjaxCommandRendererBase.java:83)
>         at org.richfaces.renderkit.AjaxCommandRendererBase.doDecode(AjaxCommandRendererBase.java:59)
>         at org.richfaces.renderkit.RendererBase.decode(RendererBase.java:80)
>         at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:789)
>         at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1183)
>         Truncated. see log file for complete stacktrace



--
This message was sent by Atlassian JIRA
(v6.2.3#6260)


More information about the richfaces-issues mailing list