0

我有实体 ExchangeRate {date, currencyFrom, rate} 。实体 currencyFrom 具有属性 code 和 Name。我将它添加到容器 addNestedContainerProperty("currencyFrom.code"); 它可以正常工作,并且代码显示在 vaadin 表中。

现在我创建 BeanValidationForm 并将该字段添加到其中。它崩溃是因为 BeanValidationValidator 尝试为 currencyFrom.code 查找 getter 并在 ExchangeRate 中查找方法 getCurrencyFrom.code。

  1. 怎么了?如何使用表单上的嵌套属性字段来显示一些信息。

  2. 可以修改 ExchangeRate 嵌套属性吗?

4

1 回答 1

1

答案在那里:vaadin 论坛

  1. BeanValidationForm 假定所有属性都在主 bean 类中——它对 JPAContainer 或嵌套属性一无所知。请注意,JSR-303 bean 验证注释直接从 bean 类访问,而不是通过容器。

为了解决这个问题,您必须为创建的每个 BeanValidationValidator 提供正确的 bean 类 - 或者覆盖 BeanValidationForm.addField() 并将正确的 bean 类提供给 BVV.addValidator(),或者直接使用 BVV 而不是使用帮助程序类 BeanValidationForm。

  1. 这应该是可能的(至少使用合适的级联设置) - 但是如果您有单独的 EntityProviders 用于嵌套实例的类,如果您仅将嵌套实体保存为主实体的一部分,它们不会收到更改通知。
于 2011-06-06T09:58:11.700 回答