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

标签 java vaadin

我在这里和 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/

相关文章:

java - 源代码预览在工作服中不可用

java - Jboss 数据源在数据库重新启动后恢复

java - 一段时间后 Vaadin UI 分离

java - 通过 Push、vaadin 切换附加组件

java - 如何使用现有的 ElasticSearch 索引实现自动完成搜索字段(建议器)?

java - Vaadin与Bootstrap

java - 如何从数据库 View /刷新实体重新加载内容?

java - 需要帮助设计 'Find my IPhone' 式的应用程序

java - 父类(super class)是每个子类的模板吗

java - 用 lwjgl 绘制玩家(一个简单的矩形)没有什么作用