问题在于来自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, 但是不要工作不要进入上传方法,不要发送异常。
答案 0 :(得分:1)
尝试更改
actionListener="#{contratosMB.upload}"
到
action="#{contratosMB.upload}"
。
答案 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和数据。