Контейнер Бобов прозрачно - PullRequest
1 голос
/ 09 апреля 2019

У меня есть класс данных оболочки Kotlin, цель которого - обернуть произвольные значения дополнительной информацией об их состоянии.Для целей этого вопроса, что-то вроде этого будет достаточно:

data class Wrapper<T>(val content: T)

К сожалению, иногда (в частности, в путях нарушения ограничения проверки javax) Spring пытается получить прямой доступ к вложенным свойствам:

data class Name(val first: Wrapper<String>)
data class Person(val name: Wrapper<Name>)

val foo = Person(Wrapper(Name(Wrapper("Steve"))))

Очевидно, что для значения типа foo путь свойства name.first не определен, так как вместо него должно быть name.content.first.content.Поэтому, если Spring получает, скажем, ConstraintViolation с путем name.first (мы написали валидатор для создания путей для Wrapper таким образом), он пытается получить доступ к этому пути на foo.foo имеет name, но это Wrapper, который имеет только content, а не first, поэтому Spring вызывает исключение.

Есть ли способ сообщить Spring, что все значениятипа Wrapper имеют те же поля, что и их content?Это похоже на AOP и Прокси, но я не могу понять, как сделать Wrapper Прокси, и если это вообще возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...