首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prime faces上传

prime faces上传
EN

Stack Overflow用户
提问于 2011-11-24 08:54:27
回答 1查看 4K关注 0票数 2

我在使用primefaces上传小工具上传时遇到问题。经过一些调查后,我注意到它发送了错误的post类型"url-data-encoded“,而不是多模式请求。尽管我的表单清楚地声明了:

代码语言:javascript
复制
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>

发生的情况是控制器中的文件字段为空。我猜与此相关的另一件事是,我在这个页面中有多个表单,我猜primefaces提交了错误的表单。

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

这是我的html表单:

代码语言:javascript
复制
<h:form prependId="false">
    <p:dataTable id="instances" lazy="false" paginator="false" var="instance"
                 value="#{panaceaController.instances}">
        <p:column>
            <f:facet name="header">
                <h:outputText value="Name"/>
            </f:facet>
                <h:outputText value="#{instance.name}"/>
        </p:column>
        <p:column>
            <f:facet name="header">
                <h:outputText value="Directory"/>
            </f:facet>
            <h:outputText value="#{instance.directory}"/>
        </p:column>
        <p:column>
            <f:facet name="header">
                Options
            </f:facet>
            <p:commandLink async="true" update="propertiesTable" oncomplete="propertiesDialog.show();">
                <h:graphicImage value="img/properties.png" />
                <f:setPropertyActionListener value="#{instance}" target="#{panaceaController.instance}"/>
            </p:commandLink>

            <p:commandLink async="true"  onclick="confirmDelete.show();" >
                <h:graphicImage value="img/edit-delete.png"/>
                <f:setPropertyActionListener value="#{instance}" target="#{panaceaController.instance}"/>
            </p:commandLink>
            <p:commandLink async="true"  onclick="mappingFileDialog.show();" >
                <h:graphicImage value="img/mapping.png"/>
                <f:setPropertyActionListener value="#{instance}" target="#{panaceaController.instance}"/>
            </p:commandLink>

        </p:column>

    </p:dataTable>
</h:form>
<p:dialog id="properties" header="Properties"  widgetVar="propertiesDialog" fixedCenter="true">
    <h:panelGroup id="propertiesTable" >
        <p>
        Properties for #{panaceaController.instance.directory} :
        </p>
    <h:form>
    <p:dataTable id="propertyTable" var="propertyInstance" value="#{panaceaController.instance.properties}" paginator="false">
        <p:column>
            <h:outputText value="#{propertyInstance.name}"/>
        </p:column>
        <p:column>
            <h:inputText value = "#{propertyInstance.value}" required="true"/>
        </p:column>
    </p:dataTable>
        <h:commandButton action="#{panaceaController.saveProperties}" value="Save"/>
    </h:form>
    </h:panelGroup>
</p:dialog>
<h:form>
<p:confirmDialog widgetVar="confirmDelete" message="Are you sure you want to delete this Panacea instance?"
                                         severity="warn">
      <p:commandButton value="Yes" update="instances" oncomplete="confirmDelete.hide()"
            actionListener="#{panaceaController.delete}"  />
      <p:commandButton value="Not" onclick="confirmDelete.hide()" type="button"  />
</p:confirmDialog>
</h:form>
<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="false" async="false"
        action="#{panaceaController.handleFileUpload}"/>
 </h:form>
</p:dialog>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-25 00:31:57

我没有在web.xml中设置任何筛选器

您需要根据PrimeFaces User Guideweb.xml中配置PrimeFaces文件上传过滤器。以下是3.0.M4用户指南的第170页的摘录

3.34 FileUpload

..。

FileUpload入门

要做的第一件事是配置fileupload过滤器,它解析多部分请求。FileUpload过滤器应该映射到Faces Servlet。

PrimeFaces FileUpload过滤器org.primefaces.webapp.filter.FileUploadFilter PrimeFaces FileUpload过滤器Faces Servlet

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8251055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档