JSF: problems downloading files using the Icefaces component

I am trying to get a FileUpload function that works with Icefaces ace: fileEntry , but my fileUploadListener not being called on the server, here is the code:

xhtml:

 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ace="http://www.icefaces.org/icefaces/components" xmlns:ice-cc="http://www.icesoft.com/icefaces-composite-comps" xmlns:f="http://java.sun.com/jsf/core" xmlns:ice="http://www.icesoft.com/icefaces/component"> <h:head> <link rel="stylesheet" type="text/css" href="/xmlhttp/css/rime/rime.css"/> </h:head> <h:body> <h:form enctype="multipart/form-data"> <ace:fileEntry id="fileEntryComp" label="File Entry" relativePath="uploaded" fileEntryListener="#{fileUpload.uploadFile}"/> <h:commandButton value="Upload File"/> </h:form> </h:body> </html> 

java

 public void uploadFile(FileEntryEvent event) { FileEntry fileEntry = (FileEntry) event.getSource(); FileEntryResults results = fileEntry.getResults(); for (FileEntryResults.FileInfo fileInfo : results.getFiles()) { if (fileInfo.isSaved()) { log.debug("########### FILE IS SAVED ########"); } } } 

Information about the magazine:

  FINE lifecycle - Entering RestoreViewPhase FINE lifecycle - New request: creating a view for /trade_entry/UploadBlotter.xhtml FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - Created component with component type of 'javax.faces.ViewRoot' FINE application - Created new view for /trade_entry/UploadBlotter.xhtml FINE application - RenderKitId for this view as determined by calculateRenderKitId HTML_BASIC FINE lifecycle - Exiting RestoreViewPhase FINE timing - [TIMING] - [2ms] : Execution time for phase (including any PhaseListeners) -> RESTORE_VIEW 1 FINE lifecycle - render( com.sun.faces.context.FacesContextImpl@1dc6429 ) FINE lifecycle - Entering RenderResponsePhase FINE lifecycle - About to render view /trade_entry/UploadBlotter.xhtml FINE application - Building View: /trade_entry/UploadBlotter.xhtml FINE application - Created component with component type of 'javax.faces.Output' FINE component - /trade_entry/UploadBlotter.xhtml @7,9 <h:head> Component[-1351329185_508ba5ae] Created: javax .faces.component.UIOutput FINE application - Created component with component type of 'javax.faces.Output' FINE component - /trade_entry/UploadBlotter.xhtml @10,9 <h:body> Component[-1351329185_508ba588] Created: java x.faces.component.UIOutput FINE application - Created component with component type of 'javax.faces.HtmlForm' FINE component - /trade_entry/UploadBlotter.xhtml @11,13 <h:form> Component[-1351329185_508ba5e2] Created: jav ax.faces.component.html.HtmlForm FINE application - Created component with component type of 'org.icefaces.ace.component.FileEntry' FINE application - Created component with component type of 'javax.faces.Output' FINE application - Created component with component type of 'javax.faces.ComponentResourceContainer' FINE application - Created component with component type of 'javax.faces.Output' FINE application - Created component with component type of 'javax.faces.Output' FINE component - /trade_entry/UploadBlotter.xhtml @15,70 <ace:fileEntry> Component[-1351329185_508ba5fc] Creat ed: org.icefaces.ace.component.fileentry.FileEntry FINE application - Created component with component type of 'javax.faces.HtmlCommandButton' FINE component - /trade_entry/UploadBlotter.xhtml @16,47 <h:commandButton> Component[-1351329185_508ba5c9] Cre ated: javax.faces.component.html.HtmlCommandButton FINE application - Created component with component type of 'javax.faces.ComponentResourceContainer' FINE component - No renderer-type for component j_id1 FINE component - No renderer-type for component javax_faces_location_BODY FINE application - Rendering View: /trade_entry/UploadBlotter.xhtml FINE component - No renderer-type for component javax_faces_location_HEAD FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE component - No renderer-type for component _captureFileOnsubmit FINE application - Begin writing marker for viewId /trade_entry/UploadBlotter.xhtml FINE application - End writing marker for viewId /trade_entry/UploadBlotter.xhtml FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - URL pattern of the FacesServlet executing the current request .jsp FINE application - Begin writing marker for viewId /trade_entry/UploadBlotter.xhtml FINE application - End writing marker for viewId /trade_entry/UploadBlotter.xhtml FINE lifecycle - Exiting RenderResponsePhase 

Now, in the current state, I can open the file system navigation popup and I can select the file, but then fileUploadListener should be clicked, but now it’s not, I can also get some data that I installed on the server side, so the server side the work only works with the question, do I have fileUploadListener missed, any suggestions?

Update I'm still looking for an answer, since I could not successfully upload the file to the server.

Update 2 Now I get a Content is not allowed in prolog , not sure what exactly this means, here is stacktrace:

  ERROR [Faces Servlet] - Servlet.service() for servlet Faces Servlet threw exception: javax.faces.view.facelets.Facele tException: Error Parsing /trade_entry/UploadBlotter.xhtml: Error Traced[line: 2] Content is not allowed in prolog. at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:417) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:400) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:130) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:327) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:93) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:166) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:164) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:94) [:2.1.7-SNAPSHOT] at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:89) [:2.1.7-SNAPSHOT] at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99) [:2.1.7-SNAPSHOT] 
+1
source share
4 answers

I don't see any <h:form> surrounding your component, is there any in your code? I have no experience with icy surfaces, but I use richFaces. Via

 <rich:fileUpload immediate="true" id="fileUploadId" ajaxSingle="true" listHeight="70px" listWidth="500px" uploadButtonClass="otherButton" styleClass="backgroundColorInput" addButtonClass="otherButton" fileUploadListener="#{paramActions.fileUploadListener}"> <a:support event="onuploadcomplete" reRender="paramsForm" /> </rich:fileUpload> 

he must be enclosed in

 <h:form id="paramsForm" enctype="multipart/form-data"> 
> multipart / form-data strong> enctype is required for fileUpload
+2
source

In most cases, closed tags raise this exception. Check out xhtml, you can find any tag that opens.

for example: any open div or span ..

+1
source

remove enctype="multipart/form-data" from h:form , it will work without it.

0
source

I had exactly this problem on the JBoss 7.1 server. I had an EAR project, several EJB projects, and several WAR projects. When I had a problem, I deployed the ice banks in the EAR library, but when I transferred them to the WAR project, which used the ace: fileentry, it started working.

0
source

Source: https://habr.com/ru/post/1441254/


All Articles