springboot参数校验之校验List集合内的元素
springboot参数校验之校验List集合内的元素
·
springboot参数校验之校验List集合内的元素
先看源码
控制层
@ApiOperation(value = "告警触发新增")
@RequestMapping("/add")
public CommonResp<?> add(@RequestBody List<AlarmTriggerConfig> list) {
validateList(list, Insert.class);
alarmTriggerService.add(list, getLoginUser());
return CommonResp.success();
}
实体类
public class AlarmTriggerConfig extends BaseEntity {
@ApiModelProperty("变量编码")
@NotBlank(message = "变量编码不能为空",groups = {Insert.class})
private String varSn;
}
BaseController 公共方法
import javax.validation.Validator; // 注意是导入这个包
public abstract class BaseController {
@Resource
private Validator validator;
/**
* 校验List,逐个校验每个元素
*
* @param list 校验的参数
* @param clazz 检验分组 可传多个
*/
public void validateList(List<?> list, Class<?>... clazz) {
StringBuilder errorMessage = new StringBuilder("列表校验失败:");
// 遍历列表,逐个校验每个元素
for (Object element : list) {
// 校验元素本身
Set<ConstraintViolation<Object>> violations = validator.validate(element, clazz);
// 收集错误信息
if (!violations.isEmpty()) {
for (ConstraintViolation<Object> violation : violations) {
errorMessage.append(violation.getMessage()).append(" ");
}
}
}
// 如果有校验错误,抛出异常
if (errorMessage.length() > "列表校验失败:".length()) {
throw new IllegalArgumentException(errorMessage.toString());
}
}
}
解决历程:
网上好多方法都没解决我的问题,最后想到用这种方法校验,手动调用,循环校验。好歹是解决了
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)