2

我正在使用 PrimeFaces p:fileUpload按照手册将图像传输到支持 bean,如下所示:

                <h:outputLabel value="Select Files:" />
                <p:fileUpload fileUploadListener="#{uploadImage.doUpload}"
                                  multiple="true"
                                  allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
                                  description="Select Images"                                      
                                  update="@form"
                                  />

该组件允许用户选择多个文件批量上传,非常方便。然而,在将它们存储到数据库之前,我希望用户输入更多信息(即图像标题),因此doUpload()方法获取上传的文件并将它们保存到名为work的属性中,该属性是对象列表。

在页面的后面(在同一个h:form内)我有一个数据表,显示需要处理的上传文件。

                <p:dataTable
                    value="#{uploadImage.work}"
                    var="unit"
                    resizableColumns="true"
                    rendered="#{not empty uploadImage.work}">

问题是数据表只重绘一次,无论上传多少文件。doUpload ()方法被调用每个文件。因此,当我单击组件上的Upload按钮时,p:dataTable会出现,但无论如何只有一行。如果我刷新屏幕,所有行都会出现。

每次doUpload()退出时,有什么方法可以重新渲染p:dataTable吗?

4

1 回答 1

2

使用 primefaces RequestContext组件在服务器端更新您的数据表。例如

  public void myFileUploadListener(FileUploadEvent event){
   //All your processing goes here
   RequestContext reqContext = RequestContext.getCurrentInstance();  //get your hands on request context
   reqContext.update(":form:myDatatable"); //update the datatable for each execution

  }
于 2012-10-27T03:52:58.540 回答