注解参数校验

注解校验

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);
    }
}
相关推荐
Bruce_Liuxiaowei2 小时前
Kali Linux 加入 Windows 域实战指南:解决域发现与加入失败问题
linux·运维·windows
鸽鸽程序猿3 小时前
【项目】【抽奖系统】活动列表展示
windows
晚枫~5 小时前
不同浏览器在Windows和Mac上的跨域配置方法
windows·macos
雪碧聊技术6 小时前
怎么重启电脑的网卡(Windows系统)?
windows·重启网卡
程序猿_极客8 小时前
【2025 最新】 Maven 下载安装与配置教程(超详细带图文Windows 版):从入门到实战
java·开发语言·windows·maven·maven安装
XDHCOM10 小时前
深入掌握Unicode转换方法:从基础到高级的实用技巧与应用场景
windows
q***577411 小时前
Node.JS 版本管理工具 Fnm 安装及配置(Windows)
windows·node.js
Bruce_Liuxiaowei11 小时前
HTTPHTTPS探测出网技术详解:跨平台命令与实战方法
运维·windows·安全·网络安全
njsgcs11 小时前
pyautocad获得所选圆弧的弧长总和
开发语言·windows·python
百***680419 小时前
Node.JS 版本管理工具 Fnm 安装及配置(Windows)
windows·node.js