[alibaba/easyexcel]新增 Bean Validation 校验逻辑

2024-05-09 274 views
5
背景

读取 Excel 的场景,只要是非 demo 类型的应用,理论上都会对用户输入的数据进行基础校验(非空、长度校验等)。在 issue 中大致搜索了一下,也确认数据校验的场景是很普遍的,但目前 EasyExcel 并没有提供相关功能。读取 Excel 时,用户目前有两种校验方案:

  1. 用户在自定义 ReadListener 中编写校验逻辑 缺点:这对于一些基础非空校验来说,用户需要编写大量 if 代码进行判断,一旦 Excel 字段较多(几十上百),会使得用户自定义的 ReadListener 变得非常臃肿,切对于字段校验规则的维护也十分不便
  2. 用户自行引入 validator 框架,调用框架 api 对打上校验注解的 bean 进行验证 缺点:用户需要对校验框架有一定了解,能正确处理校验框架逻辑,有一定学习成本
目标

在 EasyExcel 内集成 Hibernate Validator 校验框架,利用一个简单配置即可开启注解校验,当校验出错时,向用户抛出异常

// 开启数据校验示例
EasyExcel
    .read()
    .validate(true)
    .doRead();
方案

增加一个ModelValidateEventListener 监听器,其顺序在 ModelBuildEventListener 之后,用户自定义 listener 之前,在该监听器内部对 Model 数据进行校验

image TODO

@zhuangjiaju 麻烦帮看下该方案是否可行,以及EasyExcel 一直没有实现 validator 逻辑是有什么其他限制因素吗,如果没有问题我这边提个 pr 对该功能进行支持

回答

3

很有必要的功能

7

?

2

必须支持,太有必要了,感觉这一块设计的太差