p: загрузка файлов не работает в Websphere 8

#file-upload #jsf-2 #websphere #primefaces #ibm-rad

#загрузка файлов #jsf-2 #websphere #основные возможности #ibm-rad

Вопрос:

Интересно, удалось ли кому-нибудь заставить p:fileupload компонент Primefaces работать на Websphere Application Server 8.

Я использую Primefaces версии 2.2.1.

Код JSF:

 <h:form enctype="multipart/form-data">  
    <p:fileUpload 
            fileUploadListener="#{mailBean.handleFileUpload}"   
            multiple="true" 
            label="choose" 
            allowTypes="*.jpg;*.png;*.gif;" 
            description="Images"/>          
</h:form>
  

Управляемый Bean-код:

 public void handleFileUpload(FileUploadEvent event) 
{  
    files.add(event.getFile());
    logger.info("File uploaded into MailBean: "   event.getFile());
    System.out.println("File uploaded into MailBean: "   event.getFile());
} 
  

Web.xml фильтр: (Сервлет 3.0)

 <filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>51200</param-value>
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>c:/temp/pf</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
  

Компонент выдает сообщение об ошибке HTTP и становится красным, на консоли я получаю исключение ViewExpiredException от Myfaces:

 Caused by: javax.faces.application.ViewExpiredException: /createmail.xhtml
           No saved view state could be found for the view identifier: /createmail.xhtml
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
  

Я даже пробовал использовать две другие версии Mojarra вместо Myfaces, но я получил ошибки (2.1: обработчик не вызывается, 2.0.3: просмотр расширен)

Ответ №1:

У вас были .jars и web.xml конфигурация (удалите «c:», по умолчанию используется этот маршрут)? У меня была такая же проблема, но затем я перезапустил свой WAS 8.5, и это сработало.

Ответ №2:

Я использую Websphere 7 с JSF 2.0 с Mojarra 2 и PrimeFaces 3.4.2 (common-fileupload-1.2.2.jar и common-io-1.3.2.jar )

Я вижу, что загрузка файлов не вызывает компонент в WebSphere. Я вижу панель, которая загружает файл, но не получает событие на ManagedBean.

Кажется, что какой-то другой фильтр в Websphere перехватывает HTTP-запрос, и вы не можете получить данные, отправленные FileUpload, потому что они просто потребляются: (