5
背景
读取 Excel 的场景,只要是非 demo 类型的应用,理论上都会对用户输入的数据进行基础校验(非空、长度校验等)。在 issue 中大致搜索了一下,也确认数据校验的场景是很普遍的,但目前 EasyExcel 并没有提供相关功能。读取 Excel 时,用户目前有两种校验方案:
- 用户在自定义 ReadListener 中编写校验逻辑 缺点:这对于一些基础非空校验来说,用户需要编写大量 if 代码进行判断,一旦 Excel 字段较多(几十上百),会使得用户自定义的 ReadListener 变得非常臃肿,切对于字段校验规则的维护也十分不便
- 用户自行引入 validator 框架,调用框架 api 对打上校验注解的 bean 进行验证 缺点:用户需要对校验框架有一定了解,能正确处理校验框架逻辑,有一定学习成本
在 EasyExcel 内集成 Hibernate Validator 校验框架,利用一个简单配置即可开启注解校验,当校验出错时,向用户抛出异常
// 开启数据校验示例
EasyExcel
.read()
.validate(true)
.doRead();
方案
增加一个ModelValidateEventListener
监听器,其顺序在 ModelBuildEventListener
之后,用户自定义 listener 之前,在该监听器内部对 Model 数据进行校验
@zhuangjiaju 麻烦帮看下该方案是否可行,以及EasyExcel 一直没有实现 validator 逻辑是有什么其他限制因素吗,如果没有问题我这边提个 pr 对该功能进行支持