jsf-2 - 使用 p :fileUpload with AJAX

标签 jsf-2 primefaces

我正在使用 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

最佳答案

使用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

  }

关于jsf-2 - 使用 p :fileUpload with AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090347/

相关文章:

java - 在 UIInput 组件中使用带参数的方法时如何调用 setter 方法?

css - 在 Primefaces 中全局更改默认样式

jsf-2 - 我如何使用@ConversationScoped

ajax - 如何检查 JSF 应用程序中的有效 session ?

javascript - 通过 Javascript 单击时 PrimeFaces 单选按钮样式不更新

jakarta-ee - 在 JSF @ViewScoped 和 WebSocket @ServerEndpoint 之间共享数据

java - 使用 Java 隐藏 JSF 元素

JSF Primefaces - 如何突出显示当前选定的 p :menuitem.

javascript - p :selectOneMenu in Primefaces 3. 4.2 错误

jsf - 提供PDF下载后自动打开打印机对话框