是否可以在p:fileUpload上重置文件限制计数器?

时间:2014-08-04 21:00:06

标签: primefaces

我们有p:fileUpload让用户上传头像图片。如果他想要他能够快速连续上传不同的,而不必重新加载视图;这将取代他每次的当前头像。但是,如果fileLimit设置为1,则必须重新加载页面才能再次使用该组件。如果它更多(或无限制(= 0)),他可以一次上传多个文件,这没有多大意义。 multiple - 属性(如果设置为false)仅限制文件浏览对话框选择单个文件;它仍然可以再次打开,随意添加更多文件。是否可以允许上传任意数量的文件,但一次不能上传多个文件?我们正在使用Primefaces 4.0。

3 个答案:

答案 0 :(得分:17)

我遇到了同样的问题。添加更新=" @ this"到p:fileUpload标签解决了它。

答案 1 :(得分:5)

我提出了这种解决方法,它不会重置文件限制计数器本身,而是重置fileUpload组件,以便计数器也重置。这样,参数fileLimit限制了每次上传的文件数量,而不是每页面加载的数量。

首先让我们在PrimeFaces FileUpload组件中定义一个reset()函数:

PrimeFaces.widget.FileUpload.prototype.reset = function() {
    this.clearMessages();
    return this.init(this.cfg);
}

此方法通过使用当前配置调用init()来重置组件。

然后我们只需要在FileUploadEvent中调用此方法,如下所示:

public void uploadFile(FileUploadEvent event) {
    RequestContext.getCurrentInstance().execute("PF('fileUploadWidgetVar').reset();");
}

现在每次处理上传的文件时,计数器都会重置,因为组件也会重置。

答案 2 :(得分:1)

您是否使用了auto="true"声明?请记住,除非用户激活,否则Primefaces中的默认设置不会自动上传文件。