GWT以编程方式单击FileUpload

时间:2015-01-19 07:28:45

标签: java gwt

首先,我的开发环境是使用Eclipse Luna的Chrome / Safari和OSX Yosemite上的超级开发模式。

我有点时间使用这个小部件。我创建了许多上传小部件(图像,音频,视频等),它们扩展了基本上传小部件。图像上传在初始化时调用FileUpload.click(),并且显示在文件对话框中按预期工作。但是,对于音频和视频上传,我需要用户从SuggestBox中选择一个选项,然后一旦做出选择,就应该触发FileUpload.click()(我已经有了事件处理程序等)。最后一位不起作用,或者看起来不像我没有显示文件对话框。我已经跟踪了SuperDevMode中的代码执行,并且FileUpload.click()看起来似乎被触发了(执行移动到这一点并且没有抛出错误/异常),但我不能,因为我的生活中会显示对话框。 FileUpload元素没有被隐藏/禁用(以前是关闭屏幕',但我改变了这一点只是为了确保这不是问题)。

可能导致这种情况的原因 - 可能是操作系统/浏览器问题,而不是GWT问题吗?

更新

我决定将一个ClickHandler添加到FileUpload小部件,该小部件在触发时只是写入控制台。通过这两种机制,上传小部件被点击了,所以我真的不知道下一步该去哪里。有趣的是,如果我从音频上传中删除SuggestBox并只是调用点击功能,我会得到弹出窗口,但我不明白为什么这会干扰点击(如果存在)。


解决

解决了它。因此,如果触发它的事件是ClickEvent,那么尝试以编程方式单击触发FileUpload当前是有效的。为了解决这个问题,我必须创建自己的本机点击事件,并在用户从SuggestBox中进行选择时触发。这是预期的行为吗?

1 个答案:

答案 0 :(得分:1)

您可以触发像this这样的FileUpload点击:

FileUpload f = new FileUpload(); 
f.getElement().<InputElement>cast().click();

为了在基于WebKit的浏览器(Chrome,Safari)中工作,FileUpload必须“移出视图”但不隐藏(如setVisible(false),它将CSS显示属性设置为none),即(在CSS中):position:absolute;上:-1000px;左:-1000px;