我有实体ExchangeRate {date,currencyFrom,rate}。实体currencyFrom具有属性代码和名称。我将它添加到容器addNestedContainerProperty(“currencyFrom.code”); 它没有问题,代码显示在vaadin表中。
现在我创建BeanValidationForm并将此字段添加到它。它崩溃是因为BeanValidationValidator它试图找到currencyFrom.code的getter并在ExchangeRate中查找方法getCurrencyFrom.code。
怎么了?如何在表单上使用嵌套属性字段来显示某些信息。
可以修改ExchangeRate嵌套属性吗?
答案 0 :(得分:1)
答案在那里:vaadin forum
- BeanValidationForm假设所有属性都在主bean类中 - 它对JPAContainer或嵌套属性一无所知。请注意,JSR-303 bean验证注释可以直接从bean类访问,而不是通过容器访问。
醇>要解决这个问题,必须为每个创建的BeanValidationValidator提供正确的bean类 - 覆盖BeanValidationForm.addField()并将正确的bean类提供给BVV.addValidator(),或直接使用BVV而不是使用帮助程序类BeanValidationForm。
- 应该是可能的(至少在适当的级联设置下) - 但如果您对嵌套实例的类有单独的EntityProviders,如果您只将嵌套实体保存为主实体的一部分,则不会通知它们更改。
醇>