注解参数校验

注解校验

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);
    }
}
相关推荐
_Aaron___15 小时前
List.subList() 返回值为什么不能强转成 ArrayList
数据结构·windows·list
magic3341656316 小时前
Springboot整合MinIO文件服务(windows版本)
windows·spring boot·后端·minio·文件对象存储
babytiger1 天前
windows中用wsl使用cuda
windows·wsl·cuda
Mr.45671 天前
Windows 11 右键菜单恢复 Windows 10 经典样式:3 种实用方法详解
windows
一勺-_-1 天前
安装Windows双系统的步骤
windows
sukalot1 天前
windows显示驱动开发-多监视器管理器(三)
windows·驱动开发
Java技术实践1 天前
JPA 用 List 入参在 @Query中报错 unexpected AST node: {vector}
数据结构·windows·list
wangqiaowq1 天前
ImmutableList.of() 是 Google Guava 库 提供的一个静态工厂方法,用于创建一个不可变的(immutable)列表。
开发语言·windows·python
小龙报1 天前
《算法每日一题(1)--- 连续因子》
c语言·开发语言·c++·windows·git·算法·visual studio
日日行不惧千万里1 天前
绕过微软联网账号限制:用本地用户安装 Windows 11 的最新 3 种方法
windows·microsoft