Java 带combobox的vaadin Beanfield组绑定问题

Java 带combobox的vaadin Beanfield组绑定问题,java,vaadin,Java,Vaadin,我不确定我是否正确理解BeanFieldGroup,但我希望它应该将字段(UI组件)中的值绑定到我的自定义bean(例如POJO) 这是我的POJO public class JobConfigDTO { @Max(50) private String format; @Max(50) private String template; @Max(50) private String channel; } 使用这段代码,我试图将POJO绑定到

我不确定我是否正确理解BeanFieldGroup,但我希望它应该将字段(UI组件)中的值绑定到我的自定义bean(例如POJO)

这是我的POJO

public class JobConfigDTO {

    @Max(50)
    private String format;

    @Max(50)
    private String template;

    @Max(50)
    private String channel;
}
使用这段代码,我试图将POJO绑定到复选框

private void test(){

    JobConfigDTO jobConfigDTO = new JobConfigDTO();
    ComboBox comboChannel = createEditFormCombobox("Channel", "CHANNEL");
    ComboBox comboFormat = createEditFormCombobox("Format", "FORMAT");
    ComboBox comboTemplate = createEditFormCombobox("Template", "TEMPLATE");

    BeanFieldGroup<JobConfigDTO> binder = new BeanFieldGroup<>(JobConfigDTO.class);
    binder.setItemDataSource(jobConfigDTO);
    binder.setBuffered(false);
    binder.bind(comboChannel, "channel");

    binder.bind(comboChannel, "channel");
    binder.bind(comboFormat, "format");
    binder.bind(comboTemplate, "template");

    Button btnSave = new Button("Add");
    btnSave.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            try {
                log.debug("jobconfigdto {}", jobConfigDTO);
                binder.setBuffered(true);
                log.debug("jobconfigdto {}", jobConfigDTO);
                binder.commit();
                binder.setBuffered(false);
            } catch (FieldGroup.CommitException e) {
                log.error("Unable to save job config", e);
            }
        }
    });
}
private void test(){
JobConfigDTO JobConfigDTO=新的JobConfigDTO();
ComboBox comboChannel=createEditFormCombobox(“频道”、“频道”);
ComboBox comboFormat=createEditFormCombobox(“格式”、“格式”);
ComboBox comboTemplate=createEditFormCombobox(“模板”、“模板”);
BeanFieldGroup绑定器=新的BeanFieldGroup(JobConfigDTO.class);
binder.setItemDataSource(jobConfigDTO);
活页夹。设置缓冲(假);
绑定(组合频道,“频道”);
绑定(组合频道,“频道”);
bind(组合格式,“格式”);
绑定(组合模板,“模板”);
按钮btnSave=新按钮(“添加”);
btnSave.addClickListener(新建按钮.ClickListener(){
@凌驾
公共作废按钮单击(Button.ClickEvent事件){
试一试{
debug(“jobconfigdto{}”,jobconfigdto);
活页夹。设置缓冲(正确);
debug(“jobconfigdto{}”,jobconfigdto);
binder.commit();
活页夹。设置缓冲(假);
}catch(FieldGroup.committee){
log.error(“无法保存作业配置”,e);
}
}
});
}
当我在表单中为组合框设置值并单击“添加”按钮时,pojo JobConfigDTO未填充


我是否遗漏了什么,或者BeanFieldGroup有其他用法?我想将复选框中的值绑定到我的pojo类,并在最后验证它们。

问题已解决。我在复选框中使用了另一个POJO(配置),所以框架无法用这个POJO(配置)填充我的JobConfigDTO字段值。当我将复选框条目更改为字符串时。一切正常。您可以将其标记为已解决,这样它就不会出现在“未解决”部分。