问题描述
|
我有实体ExchangeRate {date,currencyFrom,rate}。实体currencyFrom具有属性代码和名称。我将其添加到容器addnestedContainerProperty(\“ currencyFrom.code \”);
它可以正常工作,并且代码显示在vaadin表中。
现在,我创建BeanValidationForm并将此字段添加到其中。它崩溃是因为BeanValidationValidator尝试为currencyFrom.code查找getter并在ExchangeRate中查找方法getCurrencyFrom.code。
怎么了?如何使用表单上的嵌套属性字段显示一些信息。
是否可以修改ExchangeRate嵌套属性?
解决方法
答案在那儿:vaadin论坛
BeanValidationForm假定所有属性都在主bean类中-它对JPAContainer或嵌套属性一无所知。注意,JSR-303 bean验证批注直接从bean类访问,而不是通过容器访问。
要解决此问题,必须为创建的每个BeanValidationValidator提供正确的Bean类-重写BeanValidationForm.addField()并将正确的Bean类提供给BVV.addValidator(),或者直接使用BVV而不是使用帮助程序类BeanValidationForm。
应该有可能(至少使用适当的级联设置)-但是,如果嵌套实例的类具有单独的EntityProvider,则仅将嵌套实体保存为主要实体的一部分时,不会将更改通知给它们。