注解参数校验

注解校验

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;
java 复制代码
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validator;

@RestController
@RequestMapping("/task")
public class TaskController {

    @Autowired
    private 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. 解析 Excel
        List<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);
    }
}
相关推荐
今夕资源网19 分钟前
windows11无法启用投屏功能 无线显示器无法添加可选功能 解决办法 Miracast修复脚本
windows·计算机外设·miracast·系统修复·无线显示器·投屏功能·投屏功能无法添加
内卷焦虑人士9 小时前
Windows安装WSL2+Ubuntu 22.04
linux·windows·ubuntu
NGBQ1213810 小时前
4DDiG Partition Manager.exe 全解析:Windows 端专业磁盘分区管理工具深度指南
windows
董林夕12 小时前
用户管理系统 - 完整接口文档
windows
桌面运维家12 小时前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows
有点傻的小可爱12 小时前
【MATLAB】新安装并口如何实现能通过PTB启用?
开发语言·windows·经验分享·matlab
Drone_xjw13 小时前
【环境搭建】Windows 10上使用Docker搭建本地Git仓库(Gitea)完整教程
windows·git·docker
深蓝轨迹13 小时前
彻底删除VMware虚拟机并清理残留,解决虚拟网卡消失问题
windows·ubuntu·centos
梦想的旅途214 小时前
API 驱动:实现企业微信外部群自动化管理与效率升级
数据库·windows
运维 小白14 小时前
从安装显卡驱动开始---windows 10部署ollama+openclaw
windows