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