当前位置: 首页 > news >正文

Hibernate-Validate参数校验之校验参数值

校验对象和校验方法参数都会获取元数据,这里的元数据就是上一节所说的内容,本章节会讲述怎么根据元数据进行参数校验,其实就是根据元数据的MetaConstraint和CascadingMetaData来校验参数值

1、hibernate参数校验的入口

1.1、校验对象

ValidatorImpl的validate方法

1.2、校验方法参数

2、校验对象

3.1、MetaConstraint校验

  • 遍历分组参数,针对每个分组进行校验MetaConstraint

  • 判断当前分组是否是Default分组,因为Default分组缓存了MetaConstraint,如果是Default分组直接可以获取缓存的MetaConstraint,否则需要遍历所有的MetaConstraint,然后判断MetaConstraint是否是当前分组

  • 遍历MetaConstraint校验

  • MetaConstraint校验,需要获取当前字段值,然后校验当前字段值

  • 获取当前字段值是通过valueContext.getValue,这里通过location反射获取字段的值

  • 如果location是FieldConstraintLocation,则通过反射获取字段的值

  • 如果location是TypeArgumentConstraintLocation,则通过最外层的FieldConstraintLocation反射获取字段的值

  • MetaConstraint.validateConstraint,这里判断valueExtractionPath是否为空,如果是空则说明应用在字段上,直接使用validator验证,这里的validator就是校验注解对应的validator,例如@NotEmpty注解对应的validator

  • MetaConstraint.validateConstraint,这里判断valueExtractionPath是否为空,如果不空则说明应用在字段的类型参数上,这个时候就需要使用valueExtractionPath来获取当前校验的值,valueExtractionPath是一个链表结构,会递归获取下一个valueExtractionPath抽取下一层的值,直到valueExtractionPath没有后继的valueExtractionPath

3.2、Cascadable校验

  • 遍历所有Cascadable
  • 获取当前值,getCascadableValue根据Cascadable是字段、参数、返回值获取当前值不一样

  • 这里会递归ContainerCascadingMetaData,ContainerCascadingMetaData会把整个字段的参数类型递归存储,依次遍历每一层ContainerCascadingMetaData
  • 如果当前ContainerCascadingMetaData的cascading是true,则校验当前value;
  • 如果当前ContainerCascadingMetaData有子节点(意思就是说当前节点类型还是参数化类型),则遍历子节点ContainerCascadingMetaData,获取对应的ValueExtractorDescriptor,抽取子节点的值,然后校验子节点的值

3、校验方法参数

校验方法参数和校验对象类似,这里不再细说

http://www.jsqmd.com/news/356784/

相关文章:

  • 2026年口碑好的环保喷漆房哪家专业工厂直供推荐 - 品牌宣传支持者
  • 2026年质量好的水帘喷漆房/干式喷漆房工厂采购指南如何选(实用) - 品牌宣传支持者
  • 2026年温州宴会厅星级酒店精选指南与三大顶尖推荐 - 2026年企业推荐榜
  • 2026年比较好的宁波数控走心机供应商推荐怎么联系(畅销) - 品牌宣传支持者
  • 2026年比较好的走心机/国产走心机实力工厂参考哪家靠谱(高评价) - 品牌宣传支持者
  • 2026年热门的卧式注塑机实力工厂参考哪家靠谱(高评价) - 品牌宣传支持者
  • 2026工业低噪声轴流风机优质厂家推荐榜单 - 优质品牌商家
  • 2026年知名的冷却塔马利填料/冷却塔良机填料直销厂家价格参考怎么选 - 品牌宣传支持者
  • 河南有机肥市场观察:五家优质生产厂家推荐 - 2026年企业推荐榜
  • 2026年河南化肥直销厂家选择指南与深度评测 - 2026年企业推荐榜
  • 大数据领域数据可视化的技术突破与挑战
  • ClickHouse 入门指南:大数据分析的高性能利器
  • 2026年江苏商业标识定制实力厂家盘点 - 2026年企业推荐榜
  • 2026年农村化粪池公司权威推荐:一体化污水处理设备/三格式化粪池/三级化粪池/农村厕所化粪池/选择指南 - 优质品牌商家
  • 2026前瞻:武昌区家长如何为孩子挑选小学英语辅导班? - 2026年企业推荐榜
  • 2026年农资选购指南:综合评价高的可靠化肥厂家盘点 - 2026年企业推荐榜
  • 2026年无线遥控器厂家推荐:c1-12pb阿波罗apollo遥控器/c1-4pb阿波罗apollo遥控器/c1-6pb阿波罗apollo遥控器/选择指南 - 优质品牌商家
  • 2026广东艺术涂料品牌综合实力TOP5 - 2026年企业推荐榜
  • 2026年热门的制笔注塑机哪家强生产厂家实力参考 - 品牌宣传支持者
  • 纹绣培训品牌深度评测:5家眉毛技术培训机构核心能力对比分析 - 优质品牌商家
  • 《机器学习导论》第 7 章-聚类
  • 2026年驻马店玉米种子选厂指南:五大维度深度评测 - 2026年企业推荐榜
  • 浙江红外激光制造商综合评测:谁是最值得信赖的合作伙伴? - 2026年企业推荐榜
  • 2026靠谱小白纹绣培训品牌榜:线条眉学校/美甲学校/美睫学校/美睫线学校/美瞳线学校/羽雕眉学校/轻氧眉学校/选择指南 - 优质品牌商家
  • 2026年1月小批量色纺纱打样定制优质品牌推荐榜:绢丝/棉色纺纱线订制/绢丝混色纱线定制/羊绒/羊毛混纺色纺纱/选择指南 - 优质品牌商家
  • 武汉洪山区儿童英语启蒙机构深度解析 - 2026年企业推荐榜
  • 2026年一季度,哪些刮泥机品牌更值得信赖? - 2026年企业推荐榜
  • 2026年质量好的千叶轮打磨头/柔性力控打磨头实用供应商采购指南如何选 - 品牌宣传支持者
  • 聚焦温州:2026年商务制服采购厂家观察 - 2026年企业推荐榜
  • 2026工业场景雨水收集系统优质厂家推荐榜 - 优质品牌商家