JSF Настройка фильтра загрузки файлов

Я пытаюсь использовать компонент fileUpload. Когда я читаю из руководства пользователя Primefaces, я должен настроить фильтр fileUpload.

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>
        org.primefaces.webapp.filter.FileUploadFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

Я добавил эти строки (предложенные руководством) в файл web.xml.

Теперь, когда сервер (Tomcat 7) запускается, я получаю исключение, и сервер не запускается. Я выложу часть трассировки стека.

GRAVE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/webApp]]
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at...
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
at....
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory

Полезна ли конфигурация этого фильтра? Как я могу настроить это правильно?

1 ответ

Решение

В руководстве пользователя PrimeFaces (стр. 14) перечислены необходимые зависимости для p:fileUpload:

Кажется, вам не хватает первой зависимости.

Вы можете скачать и поместить эти файлы в /WEB-INF/lib или - если ваш проект maven - добавьте следующие зависимости в ваш pom.xml, <dependencies> раздел:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.2</version>
</dependency>

Версии могут отличаться, в настоящее время у меня есть это в моем pom.xml

Другие вопросы по тегам