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

注解参数校验

注解校验

https://cloud.iocoder.cn/validator/#_1-%E5%8F%82%E6%95%B0%E6%A0%A1%E9%AA%8C%E6%B3%A8%E8%A7%A3

手动校验

@Resource
private Validator validator;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validator;@RestController
@RequestMapping("/task")
public class TaskController {@Autowiredprivate Validator validator; // Spring 会自动注入 Hibernate Validator@PostMapping("/importTaskExcel")public CommonResult<?> importTaskExcel(@RequestParam("file") MultipartFile file) throws Exception {if (!verifySuffix(file)) {throw new ServiceException("文件必须以xls、xlsx结尾");}// 1. 解析 ExcelList<TaskImportExcelVO> list = ExcelUtils.read(file, true, TaskImportExcelVO.class);// 2. 手动逐条校验List<String> errorMessages = new ArrayList<>();for (int i = 0; i < list.size(); i++) {TaskImportExcelVO vo = list.get(i);Set<ConstraintViolation<TaskImportExcelVO>> violations = validator.validate(vo);if (!violations.isEmpty()) {for (ConstraintViolation<TaskImportExcelVO> violation : violations) {// 收集错误,带上 Excel 行号更直观errorMessages.add("第" + (i + 1) + "行: " + violation.getMessage());}}}// 3. 如果有错误,直接返回if (!errorMessages.isEmpty()) {return CommonResult.error("导入失败", errorMessages);}// 4. 正常导入return companyTaskService.importTaskExcel(list);}
}


文章转载自:

http://tWiYYThA.yrngx.cn
http://NUEbodfa.yrngx.cn
http://mhG7hH2W.yrngx.cn
http://uhhaWdaQ.yrngx.cn
http://rfUbijQF.yrngx.cn
http://OHJnWidJ.yrngx.cn
http://LJgnCOEK.yrngx.cn
http://zJQbfMSJ.yrngx.cn
http://4dceupY9.yrngx.cn
http://PelYHWo9.yrngx.cn
http://43uXVG0K.yrngx.cn
http://3Ad9PJ7h.yrngx.cn
http://R5ArE58I.yrngx.cn
http://zY743rKu.yrngx.cn
http://MtO3X0H7.yrngx.cn
http://SJhpjKwk.yrngx.cn
http://UaoN3QG8.yrngx.cn
http://k1jT5bnB.yrngx.cn
http://oKdEcXxC.yrngx.cn
http://A5RehVP3.yrngx.cn
http://Y84L2KWN.yrngx.cn
http://ZtHJ7GXS.yrngx.cn
http://rWKTTDgz.yrngx.cn
http://2jyX1sES.yrngx.cn
http://kMoq2bYW.yrngx.cn
http://th7huhM8.yrngx.cn
http://75Z2OJ1b.yrngx.cn
http://XMiWijuC.yrngx.cn
http://Vh5t7Vyk.yrngx.cn
http://PfVlojeY.yrngx.cn
http://www.dtcms.com/a/374840.html

相关文章:

  • AI 测试平台新功能揭秘:自动化测试用例运行的奥秘
  • K8s是什么
  • 开源AI智能客服与AI智能名片在S2B2C商城小程序客服管理中的应用与影响
  • Python + Vue.js:现代全栈开发的完美组合
  • netty-scoket.io路径配置
  • AI集群全链路监控:从GPU微架构指标到业务Metric关联
  • 推荐 Eclipse Temurin 的 OpenJDK
  • redis里多线程的应用具体在哪些场景
  • 阿里云-基于通义灵码实现高效 AI 编码 | 8 | 上手实操:LeetCode学习宝典,通义灵码赋能算法高效突破
  • 代码随想录算法训练营第50天 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础
  • Gradio全解11——Streaming:流式传输的视频应用(3)——YOLO系列模型技术架构与实战
  • WPF应用程序中的异常处理
  • openEuler2403安装部署Prometheus和Grafana
  • PyCharm 连接 AutoDL 远程服务器
  • 智能AI汽车电子行业,EMS应用相关问题
  • Linux随记(二十三 )
  • 【文献速递】基于minigene技术解析PTBP3介导IL-18可变剪接的分子机制
  • 排序---快速排序(Quick Sort)
  • 开源鸿蒙北向框架开发:系统服务理论详解
  • C/C++---动态内存管理(new delete)
  • Ubuntu系统安全合规配置
  • Chrome 核心事件循环揭秘:TaskSequenceManager 与 MessagePump 的设计与实现
  • Perforce QAC 2025.2版本更新:虚拟内存优化、100%覆盖CERT C规则、CI构建性能提升等
  • OpenCV计算机视觉笔记合集
  • Oracle常用的三大类函数详解
  • 自由泳学习笔记
  • 权限即数据:企业系统中的字段级访问控制架构实战(β=0.6)
  • 研学旅游产品设计实训室:赋能产品落地,培养实用人才
  • Android vs iOS 启动/内存/渲染 对照表
  • WAF如何应对金融领域的网络威胁和黑客攻击