File upload 素面上传

File upload 素面上传,file-upload,jsf-2,primefaces,File Upload,Jsf 2,Primefaces,我上传primefaces上传小部件时遇到问题。经过一些调查,我注意到它发送了错误的post类型“url data encoded”,而不是multi-patrt请求。即使我的表格明确声明: p:dialog name= "upload" id="mapping" header="Upload Mapping File" widgetVar="mappingFileDialog" fixedCenter="true"> <h:form prependId="true" id

我上传primefaces上传小部件时遇到问题。经过一些调查,我注意到它发送了错误的post类型“url data encoded”,而不是multi-patrt请求。即使我的表格明确声明:

p:dialog name= "upload" id="mapping" header="Upload Mapping File" widgetVar="mappingFileDialog" fixedCenter="true">
     <h:form prependId="true" id="uploadMapping" enctype="multipart/form-data">
                    <p:fileUpload value="#{panaceaController.file}" mode="simple"/>
                    <p:commandButton id="uploadbuttom" value="Submit" ajax="true" 
            action="#{panaceaController.handleFileUpload}"/>
     </h:form>
    </p:dialog>
p:dialog name=“upload”id=“mapping”header=“上传映射文件”widgetVar=“mappingFileDialog”fixedCenter=“true”>
发生的情况是控制器中的文件字段为空。 我猜另一件相关的事情是,我在这个页面中有多个表单,我猜primefaces提交了错误的表单

顺便说一句,如果我对上传表单禁用ajax,请求enctype是正确的,但它不再调用该操作了

这是我的html表单:


选择权

#{panaceaController.instance.directory}的属性:

我没有在web.xml中设置任何过滤器

您需要在
web.xml
中按照配置PrimeFaces文件上载过滤器。以下是用户指南第170页的摘录:

3.34文件上载

文件上传入门 要做的第一件事是配置fileupload过滤器,该过滤器解析多部分请求。FileUpload筛选器应映射到Facesservlet

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

PrimeFaces文件上载筛选器
org.primefaces.webapp.filter.FileUploadFilter
PrimeFaces文件上载筛选器
Facesservlet

这同样适用于旧的测试版,如M1。

这里常见的问题是:-您是否在web.xml中设置了过滤器?什么版本?Primefaces正在进行大量开发,但我没有看到多部分的表单呈现不正确。如果您真的需要弄脏,扩展过滤器,在其中放置一个断点,检查实际发生的情况。我猜您在提交时看到了另一个表单。是的,是的,java代码,xhtml代码,web.xml代码,版本…primefaces版本是3.0M1。我在web.xml中没有设置任何过滤器,在primefaces示例中也没有看到任何过滤器。我将发布我的xhtml作为答案。这方面有一些进展:如果我禁用ajax,它实际上会正确提交表单并发送附加文件,但它现在不会调用我的操作。我试过action和actionListener,但都不起作用。
<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>