Jsf Primefaces文件上载更新属性不会重新加载datatable

Jsf Primefaces文件上载更新属性不会重新加载datatable,jsf,primefaces,Jsf,Primefaces,我将Primefaces 6.2与MyFaces 2.2一起使用。fileUpload组件正在部分工作,调用listener方法并保存文件,但update属性不会触发datatable自动重新加载。我必须手动刷新页面,以便上传的文件显示在datatable中 以下是视图: <h:form id="uploadForm" enctype="multipart/form-data"> <p:outputPanel id="uploadPanel"

我将Primefaces 6.2与MyFaces 2.2一起使用。fileUpload组件正在部分工作,调用listener方法并保存文件,但update属性不会触发datatable自动重新加载。我必须手动刷新页面,以便上传的文件显示在datatable中

以下是视图:

<h:form id="uploadForm" enctype="multipart/form-data">

                <p:outputPanel id="uploadPanel" style="float : left; width : 700px; padding-top : 20px">
                        <p:fileUpload id="uploadComponent" fileUploadListener="#{userDocsManagedBean.uploadListener}" mode="advanced" update="userDocsTbl" />
                </p:outputPanel>

                <p:outputPanel id="docsPanel" style="float : left; width : 700px; padding-left : 20px; padding-top : 20px" layout="block">
                    <p:dataTable id="userDocsTbl"
                                value="#{userDocsManagedBean.files}"
                                var="f"
                                rows="10"
                                scrollable="true"
                                scrollWidth="590"
                                scrollHeight="335"
                                style="width:590px; height:350px;"
                                rowHover="true" >

                        <f:facet name="header">
                            <h:outputText value="User Generated Documents" style="font-size: 16px" />
                        </f:facet>

                        <p:column headerText="File Name" styleClass="alignLeft" width="330px" sortBy="#{f.fileName}">
                            <h:outputLink value="#{f.fileName}" onclick="window.open('#{f.fileName}?p1=#{f.path}','pdf').target='_blank';return false;">#{f.fileName}</h:outputLink>
                        </p:column>

                        <p:column headerText="Date Modified" styleClass="alignCenter" width="160px" sortOrder="#{userDocsManagedBean.sortOrder}" sortBy="#{f.dateModified}">
                            <h:outputText value="#{f.dateModified}" />
                        </p:column>

                        <p:column headerText="Size" styleClass="alignCenter" width="80px" sortBy="#{f.size}">
                            <h:outputText value="#{f.size}" />
                        </p:column>

                    </p:dataTable>
                </p:outputPanel>

            </h:form>

#{f.fileName}
以下是侦听器方法(bean是可视范围的):

public void uploadListener(FileUploadEvent事件){
UploadedFile=event.getFile();
上传文件(文件);
FacesContext ctxt=FacesContext.getCurrentInstance();
集合ID=ctxt.getPartialViewContext().getRenderIds();
add(“uploadForm:userDocsTbl”);
}

PrimeFaces fileUpload update属性按预期工作,它不需要侦听器方法中的额外代码(将组件id添加到上下文中)

问题是Eclipse中的Liberty Profile服务器由于内部错误而未更新/发布其应用程序副本,因此应用程序与源代码不同步。一旦这个问题得到解决,它就如预期的那样工作了

public void uploadListener(FileUploadEvent event) {
    UploadedFile file = event.getFile();
    uploadFile(file);

    FacesContext ctxt = FacesContext.getCurrentInstance();
    Collection<String> ids = ctxt.getPartialViewContext().getRenderIds();
    ids.add("uploadForm:userDocsTbl");

}