1

问题在于来自 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添加到项目中,但不工作不进入上传方法,不发送异常。

4

3 回答 3

1

尝试改变

actionListener="#{contratosMB.upload}"

action="#{contratosMB.upload}".

看看这个: action 和 actionListener 之间的区别

于 2013-03-07T22:51:24.943 回答
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>

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

于 2013-03-08T15:02:11.767 回答
0

嵌套“表单”元素是非法的。尝试以高级模式上传文件并使用 FileUploadListener 访问 FileUploadEvent 和数据。

于 2015-06-15T11:54:17.943 回答