Jsf 2 如何使用<;p:上传文件>;简单模式?

Jsf 2 如何使用<;p:上传文件>;简单模式?,jsf-2,primefaces,Jsf 2,Primefaces,我使用将一个文件从我的jsf页面上传到一个支持bean,并获得以下eror: 22:39:06,942 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "myweb.war" 22:39:07,341 INFO [org.jboss.as.jpa] (MSC service thread 1-4) JBAS011401: Read persist

我使用
将一个文件从我的jsf页面上传到一个支持bean,并获得以下eror:

22:39:06,942 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "myweb.war"
22:39:07,341 INFO  [org.jboss.as.jpa] (MSC service thread 1-4) JBAS011401: Read persistence.xml for mywebPU
22:39:07,399 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.deployment.unit."myweb.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."myweb.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "myweb.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
Caused by: java.lang.RuntimeException: Error getting reflective information for class org.primefaces.webapp.filter.FileUploadFilter with ClassLoader ModuleClassLoader for Module "deployment.myweb.war:main" from Service Module Loader
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)
    at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
    at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0_21]
    at java.lang.Class.privateGetDeclaredFields(Class.java:2317) [rt.jar:1.7.0_21]
    at java.lang.Class.getDeclaredFields(Class.java:1762) [rt.jar:1.7.0_21]
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 10 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory from [Module "deployment.myweb.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    ... 15 more

22:39:07,429 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS015870: Deploy of deployment "myweb.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"myweb.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"myweb.war\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"myweb.war\""}}
22:39:07,433 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 1) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."myweb.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."myweb.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "myweb.war"

22:39:07,441 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"myweb.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"myweb.war\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"myweb.war\""}}}}
22:39:07,818 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment myweb.war in 381ms
22:39:06942信息[org.jboss.as.server.deployment](MSC服务线程1-4)JBAS015876:开始部署“myweb.war”
22:39:07341信息[org.jboss.as.jpa](MSC服务线程1-4)JBAS011401401:读取mywebPU的persistence.xml
22:39:07399错误[org.jboss.msc.service.fail](msc服务线程1-2)MSC00001:无法启动服务jboss.deployment.unit.“myweb.war”。POST_模块:org.jboss.msc.service.StartException in service jboss.deployment.unit.“myweb.war”。POST_模块:无法处理部署“myweb.war”的阶段POST_模块
在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
在org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
在org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[rt.jar:1.7.021]
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[rt.jar:1.7.021]
在java.lang.Thread.run(Thread.java:722)[rt.jar:1.7.0_21]
原因:java.lang.RuntimeException:从服务模块加载器获取类org.primefaces.webapp.filter.FileUploadFilter的反射信息时出错,该类包含模块“deployment.myweb.war:main”的类加载器ModuleClassLoader
位于org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
位于org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)
在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 还有5个
原因:java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItemFactory
在java.lang.Class.getDeclaredFields0(本机方法)[rt.jar:1.7.0_21]
在java.lang.Class.privateGetDeclaredFields(Class.java:2317)[rt.jar:1.7.021]
在java.lang.Class.getDeclaredFields(Class.java:1762)[rt.jar:1.7.0_21]
位于org.jboss.as.server.deployment.reflect.ClassReflectionIndex.(ClassReflectionIndex.java:57)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
位于org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 10多
原因:java.lang.ClassNotFoundException:org.apache.commons.fileupload.FileItemFactory来自服务模块加载器的[Module“deployment.myweb.war:main]
位于org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
位于org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
... 还有15个
22:39:07429信息[org.jboss.as.server](DeploymentScanner threads-1)JBAS015870:部署的部署“myweb.war”被回滚,失败消息为{“JBAS014671:Failed services”=>{“jboss.deployment.unit.\“myweb.war\”。发布模块“=>”org.jboss.msc.service.StartException in service in service jboss.deployment.unit.\“myweb.war”\“.POST_模块:无法处理部署\“myweb.war\”}的阶段POST_模块”
22:39:07433信息[org.jboss.as.controller](DeploymentScanner线程-1)JBAS014774:服务状态报告
JBAS014777:未能启动的服务:服务jboss.deployment.unit.“myweb.war”。POST_模块:服务jboss.deployment.unit.“myweb.war”中的org.jboss.msc.service.StartException。POST_模块:未能处理部署“myweb.war”的阶段POST_模块
22:39:07441错误[org.jboss.as.server.deployment.scanner](DeploymentScanner线程-2){“JBAS014653:复合操作失败并被回滚。失败的步骤:=>{“操作步骤-2”=>{“JBAS014671:失败的服务”=>{“jboss.deployment.unit.\“myweb.war\”。POST\U模块“=>”org.jboss.msc.service.StartException位于服务jboss.deployment.unit.“myweb.war\”中。发布模块:无法处理部署的阶段发布模块“myweb.war\”}
22:39:07818信息[org.jboss.as.server.deployment](MSC服务线程1-3)JBAS015877:381ms内停止部署myweb.war
我的jsf页面:

<h:form enctype="multipart/form-data">
                    <p:messages showDetail="true"/> 
                    <p:fileUpload value="#{admin_post.uploadFile}" mode="simple" />
                    <p:commandButton value="Submit" ajax="false" actionListener="#{admin_post.upload}"/>
                </h:form>

My web.xml:(使用PrimeFaces文件上载筛选器时出错)


PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
阈值大小
51200
上传目录
/tmp
PrimeFaces文件上载筛选器
Facesservlet

如何解决此问题?

对于未阅读评论的用户:

添加
而类路径完美地解决了这个问题。

正如例外情况所说:您需要将
commons fileupload xx.jar
添加到您的类路径,并且
commons io xx.jar
谢谢您的评论。我阅读了Primefaces cookb
<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>/tmp</param-value>
        </init-param>
    </filter>   
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>