Я искал часы здесь и на форумах Vaadin, но у меня, похоже, есть уникальная проблема.Vaadin BeanFieldGroup - «Свойство не каскадировано» при связывании вложенного свойства
Я упростил свою проблему, чтобы ее легко было проиллюстрировать. Так у меня есть класс Bean:
public class Bean {
private String name;
private NestedBean nestedBean;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public NestedBean getNestedBean() {
return nestedBean;
}
public void setNestedBean(NestedBean nestedBean) {
this.nestedBean = nestedBean;
}
Bean() {
this.name = "Bean";
this.nestedBean = new NestedBean();
}
}
и ее вложенное поле, класс NestedBean:
public class NestedBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
NestedBean() {
this.name = "NestedBean";
}
}
Так что теперь я хочу, чтобы связать экземпляр Bean два TextFields, с помощью BeanFieldGroup :
Bean bean = new Bean();
BeanFieldGroup<Bean> binder = new BeanFieldGroup<>(Bean.class);
binder.setItemDataSource(bean);
addComponent(binder.buildAndBind("Name", "name"));
addComponent(binder.buildAndBind("Nested name", "nestedBean.name"));
Это, однако, бросает это исключение:
java.lang.IllegalArgumentException: Property com.reygok.vaadin.main.Bean.nestedBean is not cascaded
Caused by: org.apache.bval.jsr.UnknownPropertyException: Property com.reygok.vaadin.main.Bean.nestedBean is not cascaded
Я пробовал различные решения, как:
Создание TextFields первой, а затем с помощью
binder.bind(textField, "nestedBean.name");
Делать это первая:
binder.getItemDataSource().addNestedProperty("nestedBean.name");
Но ничего не изменилось, за исключением. Так кто-то знает, что вызывает это?
Большое спасибо!
Я попробовал, тоже, но это ничего не изменило. Почему это имеет значение? – Reygok3