JSF: проблемы с выгрузкой файлов с использованием компонента Icefaces

Я пытаюсь получитьFileUpload особенность работы с IcefacesТуз: FileEntry но мойfileUploadListener на сервере не вызывается, вот код:

xhtml piece:

<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>

java piece

<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>

Log Information:

<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([email protected])
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>

Теперь в текущем состоянии я могу открыть всплывающее окно навигации по файловой системе и выбрать файл, но затемfileUploadListener должен ударить, но сейчас это не так, также я могу получить некоторые данные, которые я установил на стороне сервера, чтобы отключение сервера работало только у меня есть проблемаfileUploadListener не ударил, какие-либо предложения?

Update Я все еще ищу ответ, так как я не смог успешно загрузить файл на сервер.

Update 2 Сейчас получаюContent is not allowed in prolog исключение, не уверен, что именно это означает, вот трассировка стека:

<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>
 Volker17 окт. 2012 г., 16:08
У меня точно такая же проблема, мой fileEntryListener никогда не вызывается, вы получили какие-либо другие результаты или переход на richfaces был единственным вариантом?
 Rachel05 апр. 2012 г., 18:02
теперь вещь, я не вижу ничего в журнале сервера и отладчик не бьетfileUploadListener.

Ответы на вопрос(4)

У меня была именно эта проблема на сервере JBoss 7.1. У меня был проект EAR, несколько проектов EJB и пара проектов WAR. Когда у меня возникла проблема, я развернул баночки icefaces в библиотеке EAR, но когда я переместил их в проект WAR, который использовал ace: fileentry, он начал работать.

Большую часть времениunclosed tags вызывает это исключение. Проверьте ваш xhtml, вы можете найти любой открываемый тег.

Например: любой открытый div или span.

 Rachel05 апр. 2012 г., 22:28
нет, это не проблема здесь, также это исключение является случайным по своей природе и связано с одним CSS-файлом, в том числе, если я удаляю этот файл, то я не получаю это исключение.
Решение Вопроса

Я не вижу никаких<h:form> вокруг вашего компонента, есть ли в вашем коде? У меня нет никакого опыта работы с icefaces, но я использую для richFaces. С

<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>

это должно быть заключено в

<h:form id="paramsForm" enctype="multipart/form-data">

multipart/form-data Для fileUpload необходим enctype

 Rachel05 апр. 2012 г., 17:54
Использовал enctype, но он не внес никаких изменений.
 05 апр. 2012 г., 17:52
Вы можете добавить энктип к своей форме:
 Rachel05 апр. 2012 г., 17:55
если твойfileUploadListener называется нормально без проблем?
 05 апр. 2012 г., 17:57
да, это работающий производственный компонент;)
 Rachel05 апр. 2012 г., 17:50
я использую<ice:form> вместо<h:form>

удалитьenctype="multipart/form-data" отh:form без него все должно работать нормально.

 Rachel08 апр. 2012 г., 15:47
Я пытался удалитьenctype отh:form но все же это не работает нормально, вы можете опубликовать свой полный рабочий пример, чтобы я мог проверить, что является причиной проблемы здесь, это настоящая боль.

Ваш ответ на вопрос