vaadin JPAcontainer 和嵌套属性问题

发布于 2024-11-11 14:05:31 字数 404 浏览 3 评论 0原文

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

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

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

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

I have entity ExchangeRate {date, currencyFrom, rate} . Entity currencyFrom has properties code and Name. I add it to container addNestedContainerProperty("currencyFrom.code");
it works without problem and code is displayed in vaadin table.

Now I create BeanValidationForm and add this field to it. It crash because BeanValidationValidator it try to find getter for currencyFrom.code and looks for method getCurrencyFrom.code inside ExchangeRate.

  1. What's wrong? How can I use nested property field on form to display some information.

  2. It's possible to modify ExchangeRate nested properties?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人间不值得 2024-11-18 14:05:31

答案就在那里:vaadin 论坛

  1. BeanValidationForm 假设所有属性都在主 bean 类中 - 它不知道有关 JPAContainer 或嵌套属性的任何信息。请注意,JSR-303 bean 验证注释是直接从 bean 类访问的,而不是通过容器。

为了解决这个问题,您必须为创建的每个 BeanValidationValidator 提供正确的 bean 类 - 要么重写 BeanValidationForm.addField() 并将正确的 bean 类提供给 BVV.addValidator(),要么直接使用 BVV 而不是使用辅助类BeanValidationForm。

  1. 这应该是可能的(至少在合适的级联设置下) - 但是如果您对嵌套实例的类有单独的 EntityProvider,则如果您仅将嵌套实体保存为主实体的一部分,则它们不会收到更改通知。

Answer is there: vaadin forum

  1. BeanValidationForm assumes all the properties are in the main bean class - it does not know anything about JPAContainer or nested properties. Note that JSR-303 bean validation annotations are accessed directly from the bean class, not through the container.

To get around this, you must give the correct bean class to each BeanValidationValidator created - either override BeanValidationForm.addField() and give the correct bean class to BVV.addValidator(), or use BVV directly instead of using the helper class BeanValidationForm.

  1. It should be possible (at least with suitable cascade settings) - but if you have separate EntityProviders for the class of the nested instances, they are not notified of changes if you only save the nested entity as a part of the main entity.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文