容器的豆透明

时间:2019-04-09 11:39:46

标签: java spring kotlin

我有一个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成为代理,以及是否有可能。

0 个答案:

没有答案