我有一个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收到路径为name.first
的ConstraintViolation(我们写了一个验证器来为Wrapper
创建路径),它将尝试访问foo
上的该路径。 foo
确实有name
,但这是一个Wrapper
,仅包含content
,没有first
,因此Spring会引发异常。
有没有办法告诉Spring所有类型Wrapper
的值都具有与其content
完全相同的字段?这种感觉就像AOP和代理一样,但是我无法全神贯注于如何使Wrapper
成为代理,以及是否有可能。