#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, потому что они просто потребляются: (