gpt4 book ai didi

java - Vaadin BeanFieldGroup - 绑定(bind)嵌套属性时为 "Property is not cascaded"

转载 作者:行者123 更新时间:2023-12-01 09:07:37 26 4
gpt4 key购买 nike

我在这里和 Vaadin 论坛上搜索了几个小时,但我在这里似乎遇到了一个独特的问题。

我大大简化了我的问题,以便能够轻松地说明它。所以我有一个 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";
}
}

现在我想在 BeanFieldGroup 的帮助下将 Bean 实例绑定(bind)到两个 TextField:

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

我尝试了不同的解决方案,例如:

首先创建文本字段,然后使用

binder.bind(textField, "nestedBean.name");

首先执行此操作:

binder.getItemDataSource().addNestedProperty("nestedBean.name");

但是没有任何改变异常。那么有人知道是什么原因造成的吗?

提前非常感谢!

最佳答案

我找到了,所以如果其他人也有同样的问题:

解决方案是将@Valid注释添加到内部有嵌套字段的字段中。

所以在我的例子中:

public class Bean {
private String name;

@Valid
private NestedBean nestedBean;
...

关于java - Vaadin BeanFieldGroup - 绑定(bind)嵌套属性时为 "Property is not cascaded",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41139685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com