如何解决活页夹中的 Vaadin 上传组件,例如Crud 编辑器
我有一个 Crud(来自 Vaadin Pro)并且想使用 BinderCrudEditor 中的上传组件。 Upload 组件不存储值(或者说缺少 HasValue 接口),因此我无法使用 Binder。有没有办法以某种方式包含它,而无需在 Crud 中创建额外的按钮用于文件上传然后与侦听器一起工作?
解决方法
最简单的方法可能是使用 Vaadin 框架的 CustomField
。您实际需要决定的是返回类型。此外,设置字段的值是一个有点尴尬的用例,具体取决于您如何选择返回类型。因此,因此更多地将其作为伪代码示例。
public class UploadField extends CustomField<InputStream> {
InputStream is;
FileBuffer buffer = new FileBuffer();
public UploadField() {
Upload upload = new Upload(buffer);
upload.setAcceptedFileTypes("image/jpeg");
upload.setMaxFiles(1);
upload.addSucceededListener(event -> {
is = buffer.getInputStream();
});
add(upload);
}
public String getFileName() {
return buffer.getFileName();
}
@Override
protected InputStream generateModelValue() {
return is;
}
@Override
protected void setPresentationValue(InputStream newPresentationValue) {
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。