PrimeFaces boot file not working

I cannot get firstFaces <p:filedownload to work. Although I was able to upload the file using a custom bean download. It looks like the release is related to the ActionListener price list file, but I don't see how to do it. Does anyone have a key? Thanks.

Here is my bean:

 @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"); } } 

and here is my code:

 <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <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"> <ui:define name="title"> #{bundle.Log} </ui:define> <ui:define name="body"> <h:form> <p:separator style="height: 10px;margin-bottom: 10px;margin-top: 0px;"/> <p:commandButton value="#{bundle.Log}" image="ui-icon ui-icon-link" ajax="false" disabled="false"> <p:fileDownload value="#{fileDownloadBean.file}" /> </p:commandButton> </ui:composition> 

I get error 500: NullPointerException:

 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 

LOG:

 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) 
+7
source share
4 answers
 InputStream stream = this.getClass().getResourceAsStream("sessionlog.csv"); 

The way you place the CSV file assumes that it will be in the same package as the current class, FileDownloadBean .

If it really is in the root directory of the package, then you better use:

 InputStream stream = this.getClass().getResourceAsStream("/sessionlog.csv"); 

Or, if it is actually in another package, for example com.example , you should use:

 InputStream stream = this.getClass().getResourceAsStream("/com/example/sessionlog.csv"); 

Or, if it is actually at the root of the public webcontent (where the /WEB-INF folder is also among all other web files), you should use:

 InputStream stream = externalContext.getResourceAsStream("/sessionlog.csv"); 

(which, by the way, works great for WAR classes instead of this.getClass() )

+11
source

I am modifying my InputStream code

 InputStream stream = this.getClass().getResourceAsStream("sessionlog.csv"); 

change

 InputStream stream = new FileInputStream(new File("URL")) 

it was a decision.

+3
source

Are you sure you are successfully loading the CSV file as a resource from the class? It looks like InputStream might be null.

+2
source

My fileuplaad.xhtml is shown below

  <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> <h:form id="downloadFileForm"> <p:commandButton id="downloadLink" value="Download" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop)" icon="ui-icon-arrowthichk-s"> <p:fileDownload value="#{fileDownloadController.file}" /> </p:commandButton> </h:form> </html> Here is my bean: @ManagedBean(name="fileDownloadController") public class FileDownloadController implements Serializable { private static final long serialVersionUID = 1L; private StreamedContent file; public FileDownloadController() { InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/download/FileName.csv"); file = new DefaultStreamedContent(stream, "download/csv", "FileName.csv"); } public StreamedContent getFile() { return file; } } 
0
source

All Articles