primefaces 3.5 uploadfile无法正常工作,我使用的是netbean 7.2.1

时间:2013-03-07 22:13:08

标签: jsf-2 primefaces

问题在于来自primefaces的文件上传器 的web.xml

<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>

.xhtml

            </h:form>
               ...
            </h:form>
            <h:form enctype="multipart/form-data">
                <p:fileUpload value="#{contratosMB.fileContrato}" mode="simple"/>

                <p:commandButton value="Submit" ajax="false"  
                                 actionListener="#{contratosMB.upload}" update=":form2:formgen:growl"/>
            </h:form>

contratosMB.java

 public void upload() {  
        if(fileContrato != null) {  
            JsfUtil.addSuccessMessage("Se ha cargado correctamente el archivo: " + fileContrato.getFileName()); 
        }  
    }  

我读过这样的问题,但没有什么能帮到我...... 我在项目中添加了commons-fileupload和commons-io, 但是不要工作不要进入上传方法,不要发送异常。

3 个答案:

答案 0 :(得分:1)

尝试更改

actionListener="#{contratosMB.upload}"

action="#{contratosMB.upload}"

  

检查一下:   Differences between action and actionListener

答案 1 :(得分:0)

它正在创建和编辑faces-config:

    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId> commons-fileupload</artifactId>
    <version>1.2.1</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId> commons-io</artifactId>
    <version>1.4</version>
</dependency>

但是对我来说不合适,因为表格上传器在其他形式内...

   <h:form>
  ...
        <h:form enctype="multipart/form-data">  

            <p:messages showDetail="true"/>  

            <p:fileUpload value="#{contratosMB.fileContrato}" mode="simple"/>  

            <p:commandButton value="Submit" ajax="false"  
                             actionListener="#{contratosMB.upload}"/>  

        </h:form>  
    </h:form>

任何人都可以告诉我为什么?

答案 2 :(得分:0)

嵌套&#39;形式&#39;元素是非法的。尝试以高级模式上传文件,并使用FileUploadListener访问FileUploadEvent和数据。