vaadin JPAконтейнер и проблема вложенных свойств - PullRequest
0 голосов
/ 01 июня 2011

У меня есть сущность ExchangeRate {date, currencyFrom, rate}. Сущность currencyFrom имеет свойства code и Name. Я добавляю его в контейнер addNestedContainerProperty ("currencyFrom.code"); работает без проблем и код отображается в таблице vaadin.

Теперь я создаю BeanValidationForm и добавляю к нему это поле. Это происходит сбой, потому что BeanValidationValidator пытается найти геттер для currencyFrom.code и ищет метод getCurrencyFrom.code внутри ExchangeRate.

  1. Что не так? Как я могу использовать поле вложенного свойства в форме для отображения некоторой информации.

  2. Можно ли изменить вложенные свойства ExchangeRate?

1 Ответ

1 голос
/ 06 июня 2011

Ответ есть: vaadin forum

  1. BeanValidationForm предполагает, что все свойства находятся в основном классе бина - он ничего не знает о JPAContainer или вложенных свойствах.Обратите внимание, что аннотации проверки bean-компонента JSR-303 доступны непосредственно из класса bean-компонента, а не из контейнера.

Чтобы обойти это, вы должны предоставить правильный класс bean-компонента каждому созданному BeanValidationValidator - либо переопределить BeanValidationForm.addField () и передайте правильный класс bean-объекта BVV.addValidator () или используйте BVV напрямую вместо вспомогательного класса BeanValidationForm.

  1. Это должно быть возможно (по крайней мере, с подходящими настройками каскада)- но если у вас есть отдельные EntityProviders для класса вложенных экземпляров, они не будут уведомлены об изменениях, если вы сохраните вложенный объект как часть основного объекта.
...