javax的Valid注解对泛型失效
来源:互联网 发布:php.ini文件下载 编辑:程序博客网 时间:2024/06/06 07:29
我们知道javax的@Valid注解的效果是递归下去的。比如有一个如下的Controller:
request的结构分别如下:
那么QueryContractRequest的chainId字段上面的Min注解是会生效的。
但是,如果ApiBaseRequest的定义如下,及使用了泛型,那么QueryContractRequest的chainId字段上面的Min注解不会生效。
为什么呢?
因为javax的校验实现ValidatorImpl.validate(T object, Class<?>... groups)(是hibernate包里的),读取了最外层类型的编译时结构,而非运行时类型,所以泛型就失效了。
这里面有个临时变量ValueContext.currentValidatable,这个属性的值是BeanMetaDataManager.getBeanMetaData( object.getClass() )这个里面取的是编译时的类型,这个object就是某个参数,而非运行时。
ValidatorImpl.validateCascadedConstraints(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext)
里面拿到一个属性的value后,应该通过value.getClass()来重新计算设定类类型,这样可以支持泛型。而非直接调用Cascadable(PropertyMetaData).getTypeArgumentsConstraints()
阅读全文
0 0
- javax的Valid注解对泛型失效
- javax的NotBlank和Email注解失效
- @Valid注解的使用
- @Valid注解的使用
- Spring-boot的@Valid注解
- JPA使用指南 javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- ejb3persistence.jar javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- JPA使用指南 javax.persistence的注解配置
- spring+mybatis的注解事物 失效问题
- @Resource 注解失效的一种场景
- javax.annotation.Resource注解
- javax.persistence 注释注解
- 简述二叉树的特性和分类
- Nginx详细安装部署教程
- macOS CLion使用GCC编译器
- js碎片知识的学习与补充(parseint与ChildNodes属性)
- php的单例模式
- javax的Valid注解对泛型失效
- WEB缓存_什么时候使用缓存
- 01 背包
- js内置对象常用方法总结 上篇(Date String Array Math )
- 【莫比乌斯函数】BZOJ2440(中山市选2011)[完全平方数]题解
- leetcode 443. String Compression
- 思科-Vlan(虚拟局域网)基本配置命令--Smallbaal的博客
- yii 利用gii生成代码,出现404错误
- mysql数据库查询比较慢的进程id