JSF配置文件上传过滤器

时间:2012-11-13 10:25:55

标签: jsf-2 primefaces classnotfoundexception lifecycleexception

我正在尝试使用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 个答案:

答案 0 :(得分:12)

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