【问题标题】:Display total files uploaded on file upload complete显示文件上传完成时上传的文件总数
【发布时间】:2015-09-01 19:24:18
【问题描述】:

我知道我的问题很基本,但我在 SO 或 Google 上找不到任何关于此的内容。

我正在使用 PrimeFaces 及其 p:fileUpload 组件。它工作正常,正在上传文件。问题是,上传这些文件后,我需要向用户显示上传了多少文件,而不是使用 JavaScript。我的 Backing Bean 中需要这个数字。

有一个 oncomplete 属性,但那是用于客户端回调(同样是 JavaScript)。

以下是我的简陋代码:)

<p:fileUpload required="true" requiredMessage="No files selected."
              mode="advanced"
              multiple="true"
              dragDropSupport="true"
              allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
              update="growlMessage"
              fileUploadListener="#{mainForm.fileUploadListener}">
</p:fileUpload>

这是支持bean:

@ManagedBean
@SessionScoped
public class MainForm {
    private int totalImageFiles;

    public MainForm() {
        this.totalImageFiles = 0;
    }

    public void fileUploadListener(FileUploadEvent event) {
        UploadedFile uploadedFile = event.getFile();
        ReaderWriter.ReadWrite(uploadedFile, yourName, yourHomeAddress, totalImageFiles);
        totalImageFiles++;
    }
}

totalImageFiles 是我要显示给用户的号码。它具有正确的值,但我不知道如何发送另一个请求来检索此号码。

【问题讨论】:

    标签: jsf file-upload jsf-2 primefaces


    【解决方案1】:

    只需在一些输出组件中引用它并通过 ajax 更新它。

    <p:fileUpload ... update="growlMessage totalImageFiles" />
    <h:outputText id="totalImageFiles" value="#{mainForm.totalImageFiles}" />
    

    【讨论】:

    • 我已经使用了您所要求的确切内容,并且它已经开始工作了。但我不是 ajax 更新任何东西。以后会不会有问题?
    • 另外,现在显示,totalImageFiles 也不准确。有时它显示正确的数字,有时则不显示。您认为我上面计算上传文件总数的方法正确吗?
    • update 属性可以做到这一点。至于编号错误,目前提供的信息中没有看到原因。
    • 请检查更新后的代码。现在你能看出一些关于编号错误的问题吗?
    • 会话范围的 bean 是错误的。当您在同一浏览器会话中刷新页面或在新选项卡/窗口中打开同一 URL 时,将重用同一 bean 实例。应该改为查看范围。另见stackoverflow.com/questions/7031885/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多