vaadin上传组件

kd3sttzy  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(375)

亲爱的社区:,
我有一个crud(来自vaadin pro)并且想使用bindercrudeditor中的upload组件。upload组件没有存储值(或者缺少hasvalue接口),所以我不能使用binder。有没有办法不在crud中创建一个额外的按钮来上传文件,然后使用监听器就可以把它包含进来?

mznpcxlj

mznpcxlj1#

最简单的方法是使用 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) {
    }

}

相关问题