Web project effected in the following technology :
[*] Win 7 HE 64 bit
[*] WildFly Full 12.0.0.Final (WildFly Core 4.0.0.Final) - installed as standalone server in my PC disk : E:\jboss\
[*] java.runtime.version = 1.8.0_162-b12
[*] MySQL 5.5.60 Community Server
[*] Hibernate Core {5.1.10.Final}
[*] JSF 2.2
[*] PrimeFaces ver.6.2
Functionality deployed short description and the problem detected :
The pdf files of database registered customers are uploaded onto server to directory as folllows : E:\files\
but in database MySQL table are stored String file names adequate for the customer concerned
.
After logging to application managment console i try to download onto local disk a file of selected customer form
E:\files\*.pdf an error in RT occurs as follows :
2019-01-12 11:22:42,178 INFO [org.primefaces.showcase.view.file.FileDownloadView] (default task-5) String file name of customer selected apperars to bo as :1_Java_wyklad_8.pdf but full filepath appears to be as :E:\files\1_Java_wyklad_8.pdf
2019-01-12 11:22:42,214 FATAL [javax.enterprise.resource.webcontainer.jsf.context] (default task-5) JSF1073: javax.faces.FacesException caught during processing of INVOKE_APPLICATION 5 : UIComponent-ClientId=, Message=null
2019-01-12 11:22:42,217 FATAL [javax.enterprise.resource.webcontainer.jsf.context] (default task-5) 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:658)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:67)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at .....etc
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:814)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
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)
... 45 more
An extract from xhtml file downoalding the files concerned :
Code: Select all
<h:outputText value="Download File :" />
<p:commandButton value="Download Document Stored" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop);" icon="ui-icon-arrowthick-1-s">
[b] <p:fileDownload value="#{fileDownloadView.file}"/>[/b]
</p:commandButton>
Code: Select all
@ManagedBean
public class FileDownloadView{
public final static Logger logger = Logger.getLogger(FileDownloadView.class.getName());
public static String filedownloaded , contentparam , path;
public RepositoryFileService getRepositoryFileService() {
return repositoryFileService;
}
public void setRepositoryFileService(RepositoryFileService repositoryFileService) {
this.repositoryFileService = repositoryFileService;
}
@ManagedProperty("#{dtGrantEditView}")
private RepositoryFileService repositoryFileService;
@PostConstruct
public void init()
{
filedownloaded = repositoryFileService.showSelectedRepoFile();
contentparam = "application/pdf";
// path = "/resources/file/"+filedownloaded;
path=getDisk() + File.separator +"files"+File.separator+filedownloaded;
logger.log(Level.INFO,"String file name of customer selected apperars to bo as :"+filedownloaded+" but full filepath appears to be as :"+path);
InputStream stream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(path);
file = new DefaultStreamedContent(stream, contentparam, filedownloaded);
}
public void setFile(StreamedContent file) {
this.file = file;
}
private StreamedContent file;
public StreamedContent getFile()
{
return file;
}
}
Actual set stored files directory as : path="E:\files\"
.
When I redeploy project setting stored files directory as : path = "/resources/file/"+filedownloaded,
then everything work propertly, but there is no possibility storing the files onto internal directory of project and redeploy it
afterwards (!)
.
Probably there is an pretty problem with 'CanonicalPath' of stored files with PF class (?).
.
Where I commit an error in implementation of PF functionality for downloadin files from server ?
I will be very thankfull for any indication or solution