【发布时间】:2012-10-22 21:44:27
【问题描述】:
我想在 vaadin 中上传录制的文件。我正在使用 vaadin 的上传组件。但问题是我不想显示文件对话框,而是想触发事件以从我自己的按钮上传组件。我编写了一个由 Upload 组件扩展的类,并调用它的 fireUploadSuccess() 方法,该事件被成功触发。但我想手动调用 receiveUpload() 方法,我的意思是从我自己的按钮触发一些事件来调用这个方法。有解决的朋友吗? 谢谢!
【问题讨论】:
我想在 vaadin 中上传录制的文件。我正在使用 vaadin 的上传组件。但问题是我不想显示文件对话框,而是想触发事件以从我自己的按钮上传组件。我编写了一个由 Upload 组件扩展的类,并调用它的 fireUploadSuccess() 方法,该事件被成功触发。但我想手动调用 receiveUpload() 方法,我的意思是从我自己的按钮触发一些事件来调用这个方法。有解决的朋友吗? 谢谢!
【问题讨论】:
通常情况下,在基础Upload Class中,调用fireUploadSuccess()时,通常会调用附加类的uploadSucceeded方法。
如果你真的改变了方法,你可能忘记了super()声明?
如果可以的话,能否请你给我们看一个你修改过的类的例子
【讨论】:
这是我使用的一个过程。
我创建了一个名为 MyFileReceive 的自定义类,它实现了 Upload.java 文件的 Receiver 接口。在那里我覆盖了方法receiveUpload(),并在收到上传的文件时做了我想做的事情。将 MyFileReceiver 类的实例放入 Upload 类的构造函数中。希望它会工作..
public class MyUI extends UI{
private MyUI.MyFileReceiver receiver = new MyUI.MyFileReceiver();
private Upload upload;
protected void init(VaadinRequest vaadinRequest) {
.............
.......................
upload = new Upload(null, receiver);
upload.addSucceededListener((SucceededEvent event) -> {
//Do what you want to do
});
public class MyReceiver implements Receiver {
@Override
public OutputStream receiveUpload(String filename, String mimeType) {
//do what you want to do when receive upload
}
}
}
【讨论】: