2017-09-13 47 views
2

我试图使用PrimeFaces p来上传文件:文件上传内号码:对话框,但它不工作号码:对话框

<h:form id="form3"> 
     <p:commandLink value="upload" oncomplete="PF('Dialog').show()" />    
     <p:dialog widgetVar="submitDialog" modal="true" > 
       <h:form id="form" enctype="multipart/form-data" > 
        <h:panelGrid id="submitPanelGrid" columns="2" > 
         <p:fileUpload id="upload" value="#{bean.file}" mode="simple" sizeLimit="100000" /> 
         <p:commandButton id="btn3" action="#{bean.submit()}" icon="ui-icon-circle-check" ajax="false" /> 
        </h:panelGrid> 
       </p:panel> 
       </h:form> 
     </p:dialog> 
</h:form> 

我得到这个例外的FileUpload并不里面p工作就在我点击链接:

org.apache.tomcat.util.http.fileupload.FileUploadBase $ InvalidContentTypeException:请求不包含的multipart/form-data的或者多/混合流,
内容类型头是application/x-www-form-urlencoded;

但在<p:dialog>之外,它工作得很好。

+0

你有没有尝试在表单中指定多部分?例如:

+0

是的,我试过了,它不起作用 – Alfonso

+1

html(和jsf)中不允许嵌套窗体 – Kukeltje

回答

1

首先另一内部的形式不作允许使用HTML,你必须该对话框的主要形式分开,并为例外你得到你需要添加enctype="multipart/form-data"到您的对话框形式:

<h:form id="form3"> 
     <p:commandLink value="upload" oncomplete="PF('Dialog').show()" />  
    </h:form>  

    <p:dialog widgetVar="submitDialog" modal="true" > 
      <h:form id="form" enctype="multipart/form-data" > 
       <h:panelGrid id="submitPanelGrid" columns="2" > 
        <p:fileUpload id="upload" value="#{bean.file}" mode="simple" sizeLimit="100000" /> 
        <p:commandButton id="btn3" action="#{bean.submit()}" icon="ui-icon-circle-check" ajax="false" /> 
       </h:panelGrid> 
      </p:panel> 
      </h:form> 
    </p:dialog> 
+0

非常感谢 – Alfonso