使用PrimeFaces在fileupload之后更新数据表

时间:2014-06-19 16:12:54

标签: ajax jsf file-upload primefaces datatable

下面是我的文件上传页面的代码,我无法弄清楚为什么上传完成时它不会更新我的数据表,如果上传成功与否。我可以做一个像更新后不渲染直到但不认为fileupload命令支持。我在我的列表上做了一个系统,它确实有值,所以列表已完全填充并准备显示但我的数据表没有显示任何内容?我错过了什么吗?

  • Tomcat 7.0
  • JSF 2.2.1
  • 铬/ IE /火狐
  • PrimeFaces 5.0
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    template="templates/template.xhtml">
    <ui:define name="title">Ingest</ui:define>
    <ui:define name="metadata">



    </ui:define>
        <ui:define name="content">          
<h:form>
    <p:fileUpload fileUploadListener="#{ingestBean.ingestListener}"
                  label="choose" invalidFileMessage="Invalid file: "
                  allowTypes="/(\.|\/)(xml)$/" multiple="true" update="@form">
    </p:fileUpload>

     <p:dataTable var="errors" value="#{ingestBean.errorList}" id="errorTable">
        <p:column headerText="File Name">
            <h:outputText value="#{errors.fileName}" />
        </p:column>

        <p:column headerText="Status">
            <h:form>
                <h:commandLink action="#{ingestBean.getErrorInfo}"
                               value="errors.status">
                    <f:param name="id" value="#{errors.id}" />
                </h:commandLink>
            </h:form>
        </p:column>
    </p:dataTable>
</h:form>

    </ui:define>
</ui:composition>
</html>

编辑:经过一堆测试和代码重写后,我已经部分工作但看起来它不喜欢在我的模板代码中渲染...所以我想知道我的模板中是否有错误代码。

模板代码:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core">
<f:view contentType="text/html" id="fview">

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title><ui:insert name="title">Page template with PrimeFaces</ui:insert></title>
    <ui:debug />
    <f:metadata>
        <ui:insert name="metadata" />
    </f:metadata>

    <h:head>
        <style>
#leftPanel {
    z-index: 1 !important;
}

#leftPanel div {
    overflow: visible;
}

</style>


    </h:head>

    <h:body onload="statusDialog.hide();">
        <h:outputStylesheet library="css" name="style.css" />
        <p:ajaxStatus onstart="statusDialog.show();"
            onsuccess="statusDialog.hide();" />
        <p:layout fullPage="true" resizeTitle="resize"
            style="background-color:#FFFFFF;">
            <p:layoutUnit position="north" size="68" id="north">
                <ui:include src="header.xhtml" />
            </p:layoutUnit>
            <p:layoutUnit position="west" size="202" header="Menu" id="leftPanel">
                <ui:include src="menu.xhtml" />
            </p:layoutUnit>
            <p:layoutUnit styleClass="layoutUnitCenter" position="center">
                <h:form id="mainForm">
                    <ui:insert name="content" />
                </h:form>
            </p:layoutUnit>

        </p:layout>


    </h:body>

</f:view>
</html>

1 个答案:

答案 0 :(得分:0)

经过一系列测试,删除和重写,就像我的所有代码一样,我发现布局和<f:view>是一个愚蠢的错误所以我删除了它并

<p:ajaxStatus onstart="statusDialog.show();"
            onsuccess="statusDialog.hide();" />

一切似乎都运转良好!