javax的Valid注解对泛型失效

更新时间:2023-05-12 09:41:53 阅读: 评论:0

javax的Valid注解对泛型失效
我们知道javax的@Valid注解的效果是递归下去的。⽐如有⼀个如下的Controller:
request的结构分别如下:
那么QueryContractRequest的chainId字段上⾯的Min注解是会⽣效的。
但是,如果ApiBaRequest的定义如下,及使⽤了泛型,那么QueryContractRequest的chainId字段上⾯的Min注解不会⽣效。
为什么呢?
因为javax的校验实现ValidatorImpl.validate(T object, Class<?>... groups)(是hibernate包⾥的),读取了最外层类型的编译时结构,⽽⾮运⾏时类型,所以泛型就失效了。
这⾥⾯有个临时变量ValueContext.currentValidatable,这个属性的值是BeanMetaData(
ValidatorImpl.validateCascadedConstraints(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext)
⾥⾯拿到⼀个属性的value后,应该通过Class()来重新计算设定类类型,这样可以⽀持泛型。⽽⾮直接调
⽤Cascadable(PropertyMetaData).getTypeArgumentsConstraints()

本文发布于:2023-05-12 09:41:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/105537.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   注解   编译   校验   拿到   实现
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图