Java 活页夹中的Vaadin上传组件,例如Crud编辑器

Java 活页夹中的Vaadin上传组件,例如Crud编辑器,java,spring,spring-boot,vaadin,vaadin-flow,Java,Spring,Spring Boot,Vaadin,Vaadin Flow,我有一个Crud(来自Vaadin Pro),希望使用BinderCrudEditor中的上载组件。Upload组件没有存储值(或者说缺少HasValue接口),因此我无法使用活页夹。有没有办法不在Crud中创建一个额外的按钮来上传文件,然后与监听器一起工作,而以某种方式将其包括进来?最简单的方法可能是使用Vaadin framework的CustomField。您实际需要确定的是返回类型。根据您选择返回类型的方式,设置字段的值在用例中也有点尴尬。因此,将此更多地作为伪代码示例 public c

我有一个Crud(来自Vaadin Pro),希望使用BinderCrudEditor中的上载组件。Upload组件没有存储值(或者说缺少HasValue接口),因此我无法使用活页夹。有没有办法不在Crud中创建一个额外的按钮来上传文件,然后与监听器一起工作,而以某种方式将其包括进来?

最简单的方法可能是使用Vaadin framework的
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) {
    }
    
}
public类UploadField扩展了CustomField{
输入流为;
FileBuffer=newfilebuffer();
公共上传字段(){
上传=新上传(缓冲区);
upload.setAcceptedFileTypes(“图像/jpeg”);
上传.setMaxFiles(1);
upload.addSucceededListener(事件->{
is=buffer.getInputStream();
});
添加(上传);
}
公共字符串getFileName(){
返回buffer.getFileName();
}
@凌驾
受保护的InputStream generateModelValue(){
回报是;
}
@凌驾
受保护的void setPresentationValue(InputStream newPresentationValue){
}
}

最简单的方法可能是使用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) {
    }
    
}
public类UploadField扩展了CustomField{
输入流为;
FileBuffer=newfilebuffer();
公共上传字段(){
上传=新上传(缓冲区);
upload.setAcceptedFileTypes(“图像/jpeg”);
上传.setMaxFiles(1);
upload.addSucceededListener(事件->{
is=buffer.getInputStream();
});
添加(上传);
}
公共字符串getFileName(){
返回buffer.getFileName();
}
@凌驾
受保护的InputStream generateModelValue(){
回报是;
}
@凌驾
受保护的void setPresentationValue(InputStream newPresentationValue){
}
}