title: PrimeFaces fileDownload does not work
body: <p>I can't get the primeFaces <code>&lt;p:filedownload</code> work. While I succeed in downloading the file using a custom download bean. Seems like the issu is related to the primefaces file download ActionListener but I don't see how. Does anyone have a clue? Thanks.</p>
  
  <p>Here is my bean:</p>
  
  <pre><code>@ManagedBean(name="fileDownloadBean")
  @SessionScoped
  public class FileDownloadBean implements Serializable {
  
      private StreamedContent file;
  
      public StreamedContent getFile() {
          return file;
      }
  
      public void setFile(StreamedContent file) {
          this.file = file;
      }
  
      /** Creates a new instance of FileDownloadBean */
      public FileDownloadBean() {
          InputStream stream = this.getClass().getResourceAsStream("sessionlog.csv");
          file = new DefaultStreamedContent(stream, "application/csv", "sessionlog.csv");
  
      }
  }
  </code></pre>
  
  <p>and here is my view code:</p>
  
  <pre><code>&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
  &lt;!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
  &lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:h="http://java.sun.com/jsf/html"
                  xmlns:p="http://primefaces.prime.com.tr/ui" 
                  xmlns:f="http://java.sun.com/jsf/core"
                  xmlns:o="http://openfaces.org/"
                  template="./../template.xhtml"&gt;
  
      &lt;ui:define name="title"&gt;
          #{bundle.Log}
      &lt;/ui:define&gt;
  
      &lt;ui:define name="body"&gt;
          &lt;h:form&gt;
              &lt;p:separator style="height: 10px;margin-bottom: 10px;margin-top: 0px;"/&gt;
              &lt;p:commandButton value="#{bundle.Log}" image="ui-icon ui-icon-link" ajax="false" disabled="false"&gt;
                  &lt;p:fileDownload value="#{fileDownloadBean.file}" /&gt;
              &lt;/p:commandButton&gt;
  &lt;/ui:composition&gt;
  </code></pre>
  
  <p>I get a 500 error:  NullPointerException :</p>
  
  <pre><code>HTTP Status 500 -
  
  type Exception report
  
  message
  
  descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
  
  exception
  
  javax.servlet.ServletException
  root cause
  
  java.lang.NullPointerException
  note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1 logs.
  
  GlassFish Server Open Source Edition 3.1
  </code></pre>
  
  <p>LOG:</p>
  
  <pre><code>WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
  java.lang.NullPointerException
      at org.primefaces.component.filedownload.FileDownloadActionListener.processAction(FileDownloadActionListener.java:59)
      at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
      at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
      at javax.faces.component.UICommand.broadcast(UICommand.java:300)
      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.StandardWrapper.service(StandardWrapper.java:1534)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
      at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
      at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
      at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
      at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
      at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
      at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
      at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
      at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
      at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
      at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
      at java.lang.Thread.run(Thread.java:662)
  </code></pre>