• Java @NotBlank反射校验


    在实际项目中,遇到了导入数据校验是否为空的情况,只使用Javax@NotBlank注解并没有什么用,还需要使用工具类校验,具体代码如下:

    pojo代码如下:
    1. import com.alibaba.excel.annotation.ExcelIgnore;
    2. import com.alibaba.excel.annotation.ExcelProperty;
    3. import com.alibaba.excel.annotation.write.style.ColumnWidth;
    4. import com.alibaba.excel.annotation.write.style.ContentRowHeight;
    5. import com.alibaba.excel.annotation.write.style.HeadFontStyle;
    6. import com.alibaba.excel.annotation.write.style.HeadRowHeight;
    7. import lombok.Data;
    8. import org.apache.poi.ss.usermodel.Font;
    9. import javax.validation.constraints.NotBlank;
    10. import java.io.Serializable;
    11. @Data
    12. @ColumnWidth(25)
    13. @HeadRowHeight(20)
    14. @ContentRowHeight(18)
    15. public class ExcelData implements Serializable {
    16. private static final long serialVersionUID = 1L;
    17. @NotBlank(message = "类型不能为空")
    18. @HeadFontStyle(color = Font.COLOR_RED)
    19. @ExcelProperty(value = "类型")
    20. private String type;
    21. @NotBlank(message = "编号不能为空")
    22. @HeadFontStyle(color = Font.COLOR_RED)
    23. @ExcelProperty(value = "编号")
    24. private String code;
    25. @HeadFontStyle(color = Font.COLOR_NORMAL)
    26. @ExcelProperty(value = "备注")
    27. private String comment;
    28. @ExcelIgnore
    29. private Long typeId;
    30. }
    工具类代码如下:
    1. import javax.validation.constraints.NotBlank;
    2. import java.lang.reflect.Field;
    3. import java.util.Objects;
    4. public class ValidationUtils {
    5. public static boolean isNotBlankFields(Object object) {
    6. Field[] fields = object.getClass().getDeclaredFields();
    7. for (Field field : fields) {
    8. if (field.isAnnotationPresent(NotBlank.class)) {
    9. field.setAccessible(true);
    10. try {
    11. Object value = field.get(object);
    12. if (Objects.isNull(value) || value.toString().trim().isEmpty()) {
    13. return false;
    14. }
    15. } catch (IllegalAccessException e) {
    16. // 异常处理
    17. }
    18. }
    19. }
    20. return true;
    21. }
    22. }
    调用代码如下:
    1. List excelDataList = new ArrayList<>();
    2. // list数据添加逻辑 ……
    3. // 空数据校验
    4. boolean allFieldsNotBlank = excelDataList.stream().allMatch(ValidationUtils::isNotBlankFields);
    5. if (!allFieldsNotBlank) {
    6. // 有空数据时的处理
    7. }

    通过调用就可以校验标注@NotBlank注解的属性值是否为空了。

  • 相关阅读:
    8 常规聚类
    Hive 的函数介绍
    sdk文档书写,如何写具有可读性和可信度的文档
    使用BigDecimal的坑
    第7章:存储系统
    【轨道机器人】成功驱动伺服电机(学生电源、DCH调试软件、DH系列伺服驱动器)
    CV基础常用知识点
    14.Vue3过渡和动画实现
    如何向开源项目(Apache-InLong)提交代码
    lua 遍历文件夹下文件名 输出到文件
  • 原文地址:https://blog.csdn.net/Brevity6/article/details/134326740