JSF: Problemas com o Upload de Arquivos usando o componente Icefaces
Estou tentando conseguirFileUpload
recurso trabalhando com Icefacesace: fileEntry mas o meufileUploadListener
no servidor não é chamado, aqui está o código:
peça xhtml:
<code><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> </code>
peça de java
<code>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 ########"); } } } </code>
Informação de Log:
<code> 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 </code>
Agora, no estado atual, eu posso abrir pop-up de navegação do sistema de arquivos e eu posso selecionar o arquivo, mas, em seguida,fileUploadListener
deve ser atingido, mas agora não, também eu sou capaz de obter alguns dados que eu definir no lado do servidor para viagem de servidor está trabalhando apenas problema eu tenho éfileUploadListener
não é atingido, alguma sugestão?
Atualizar Ainda estou procurando resposta, pois não consegui fazer o upload do arquivo para o servidor.
Atualização 2 Agora estou ficandoContent is not allowed in prolog
exceção, não sei exatamente o que isso significa, aqui está o stacktrace:
<code> 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] </code>