我在高级模式下使用FileUpload。我以前在同一个应用程序中的另一个页面上使用它。 但是现在我想在另一个页面上再次使用它,我无法使它工作。 出现3个按钮(选择,上传和取消)。当我选择一个文件按钮"上传"和"取消"已启用,但选择的文件未显示在按钮下。
按下上传按钮时,我收到以下消息(我的处理程序从未被调用过):
未捕获的TypeError:无法读取属性'提交'未定义的
来源:fileupload.js.xhtml?ln = primefaces& v = 5.2:1 我一直在寻找javascript中的调试器。错误发生在以下代码块中:
upload: function() {
for (var a = 0; a < this.files.length; a++) {
this.files[a].row.data("filedata").submit()
}
},
我认为这个错误是因为在选择文件之后,它被添加到名为files的数组中,但数据(&#34; filedata&#34;)也应该存在,并且不存在该文件。所以脚本试图调用undefined的提交方法。我想未定义的东西是一个输入,应该在选择一个文件后添加到html中并且没有添加。
是否有人知道可能导致此问题的原因?
我不知道它是否相关,但FileUpload工作的页面用于上传图像,并在那里指定allowTypes,而在此页面上我上传文本文件,属性allowTypes isn&t; t指定。所以我试图选择一个图像文件(gif或png),但也没有显示,在这种情况下,按钮上传和取消仍然被禁用。 指定allowTypes并选择错误文件时,错误消息显示在按钮下,但是当选择匹配文件时,它仍然是相同的。它没有用。
我还在Prime社区论坛上发布了这个问题:http://forum.primefaces.org/viewtopic.php?f=16&t=46724&p=145363&sid=54403839b9ad4535b70087b19048cf04#p145363
答案 0 :(得分:0)
我现在已经开始工作了。 FileUpload嵌入在2个panelGrids中。删除两个panelGrids后,FileUpload工作。 似乎panelGrid可能会破坏HTML元素树结构,使得FileUpload不再找到它自己的文件列表表(它使用JQuery来查找它)。
所以,我可以继续我的工作。 但我仍然不知道到底发生了什么,我想知道。