Vaadin 10-上载组件-删除文件事件
上载文件时,会启用一个按钮:Vaadin 10-上载组件-删除文件事件,vaadin,vaadin10,Vaadin,Vaadin10,上载文件时,会启用一个按钮: // myUploadComponent extends Upload myUploadComponent.addSucceededListener(event -> enabledMyButtonMEthod ()); // working well 我不知道如何在删除文件时禁用该按钮(单击文件旁边的十字架) 应该有类似“addRemoveListener”的东西? 如何检测此事件?我将尝试在上触发的公共注册addChangeListener(Upload
// myUploadComponent extends Upload
myUploadComponent.addSucceededListener(event -> enabledMyButtonMEthod ()); // working well
我不知道如何在删除文件时禁用该按钮(单击文件旁边的十字架)
应该有类似“addRemoveListener”的东西?
如何检测此事件?我将尝试在上触发的公共注册addChangeListener(Upload.changeStener)我将尝试在上触发的公共注册addChangeListener(Upload.changeStener)您可以收听“文件删除”上载组件中的事件。这里有一个例子
@Route("")
public class MainView extends VerticalLayout {
public MainView() {
MyUpload upload = new MyUpload();
upload.addFileRemoveListener(e -> Notification.show("Button disabled"));
add(upload);
}
class MyUpload extends Upload {
Registration addFileRemoveListener(ComponentEventListener<FileRemoveEvent> listener) {
return super.addListener(FileRemoveEvent.class, listener);
}
}
@DomEvent("file-remove")
public static class FileRemoveEvent extends ComponentEvent<Upload> {
public FileRemoveEvent(Upload source, boolean fromClient) {
super(source, fromClient);
}
}
}
@Route(“”)
公共类主视图扩展了垂直布局{
公共主视图(){
MyUpload upload=新建MyUpload();
upload.addFileRemoveListener(e->Notification.show(“按钮禁用”);
添加(上传);
}
类MyUpload扩展了Upload{
注册AddFileRemovelListener(ComponentEventListener侦听器){
返回super.addListener(FileRemoveEvent.class,listener);
}
}
@DomEvent(“文件删除”)
公共静态类FileRemoveEvent扩展ComponentEvent{
公共FileRemoveEvent(上载源,布尔值来自客户端){
超级(来源,来自客户);
}
}
}
您可以在上载组件中侦听“文件删除”事件。这里有一个例子
@Route("")
public class MainView extends VerticalLayout {
public MainView() {
MyUpload upload = new MyUpload();
upload.addFileRemoveListener(e -> Notification.show("Button disabled"));
add(upload);
}
class MyUpload extends Upload {
Registration addFileRemoveListener(ComponentEventListener<FileRemoveEvent> listener) {
return super.addListener(FileRemoveEvent.class, listener);
}
}
@DomEvent("file-remove")
public static class FileRemoveEvent extends ComponentEvent<Upload> {
public FileRemoveEvent(Upload source, boolean fromClient) {
super(source, fromClient);
}
}
}
@Route(“”)
公共类主视图扩展了垂直布局{
公共主视图(){
MyUpload upload=新建MyUpload();
upload.addFileRemoveListener(e->Notification.show(“按钮禁用”);
添加(上传);
}
类MyUpload扩展了Upload{
注册AddFileRemovelListener(ComponentEventListener侦听器){
返回super.addListener(FileRemoveEvent.class,listener);
}
}
@DomEvent(“文件删除”)
公共静态类FileRemoveEvent扩展ComponentEvent{
公共FileRemoveEvent(上载源,布尔值来自客户端){
超级(来源,来自客户);
}
}
}
我扩展了Tulio的解决方案,以在FileRemoveEvent中获得删除的文件名。非常方便
private class MyUpload extends Upload {
public MyUpload(MultiFileMemoryBuffer buffer) {super(buffer);}
Registration addFileRemoveListener(ComponentEventListener<FileRemoveEvent> listener) {
return super.addListener(FileRemoveEvent.class, listener);
}
}
@DomEvent("file-remove")
public static class FileRemoveEvent extends ComponentEvent<Upload> {
private String fileName;
public FileRemoveEvent(Upload source, boolean fromClient, @EventData("event.detail.file.name") JreJsonString fileNameJson) {
super(source, fromClient);
fileName = fileNameJson.getString();
}
public String getFileName() {
return fileName;
}
}
私有类MyUpload扩展了Upload{
公共MyUpload(多文件存储器缓冲区){super(缓冲区);}
注册AddFileRemovelListener(ComponentEventListener侦听器){
返回super.addListener(FileRemoveEvent.class,listener);
}
}
@DomEvent(“文件删除”)
公共静态类FileRemoveEvent扩展ComponentEvent{
私有字符串文件名;
public FileRemoveEvent(上传源代码,boolean fromClient,@EventData(“event.detail.file.name”)JreJsonString fileNameJson){
超级(来源,来自客户);
fileName=fileNameJson.getString();
}
公共字符串getFileName(){
返回文件名;
}
}
我扩展了Tulio的解决方案,以在FileRemoveEvent中获得删除的文件名。非常方便
private class MyUpload extends Upload {
public MyUpload(MultiFileMemoryBuffer buffer) {super(buffer);}
Registration addFileRemoveListener(ComponentEventListener<FileRemoveEvent> listener) {
return super.addListener(FileRemoveEvent.class, listener);
}
}
@DomEvent("file-remove")
public static class FileRemoveEvent extends ComponentEvent<Upload> {
private String fileName;
public FileRemoveEvent(Upload source, boolean fromClient, @EventData("event.detail.file.name") JreJsonString fileNameJson) {
super(source, fromClient);
fileName = fileNameJson.getString();
}
public String getFileName() {
return fileName;
}
}
私有类MyUpload扩展了Upload{
公共MyUpload(多文件存储器缓冲区){super(缓冲区);}
注册AddFileRemovelListener(ComponentEventListener侦听器){
返回super.addListener(FileRemoveEvent.class,listener);
}
}
@DomEvent(“文件删除”)
公共静态类FileRemoveEvent扩展ComponentEvent{
私有字符串文件名;
public FileRemoveEvent(上传源代码,boolean fromClient,@EventData(“event.detail.file.name”)JreJsonString fileNameJson){
超级(来源,来自客户);
fileName=fileNameJson.getString();
}
公共字符串getFileName(){
返回文件名;
}
}
我添加了事件监听器,如下所示
上传
.getElement()
.addEventListener(
“文件删除”,
活动->{
JsonObject eventData=event.getEventData();
String fileName=eventData.getString(“event.detail.file.name”);
// ...
}).addEventData(“event.detail.file.name”);
在这里找到了解决方案:我添加了事件监听器,如下所示
上传
.getElement()
.addEventListener(
“文件删除”,
活动->{
JsonObject eventData=event.getEventData();
String fileName=eventData.getString(“event.detail.file.name”);
// ...
}).addEventData(“event.detail.file.name”);
在此处找到解决方案: