• 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注解的属性值是否为空了。

  • 相关阅读:
    Vue 路由跳转设置不刷新
    从java代码到网络编程
    HTML零基础入门(中)
    iText生成PDF文件
    导出conda某个环境配置,并再另一台机器安装
    Vue中的动态组件和缓存组件
    Linux系统 -目录结构与配网
    Redis高可用之持久化、主从复制(附配置实例)
    Feign
    R语言将多个字符串连接起来:使用paste函数将多个字符串拼接起来、使用paste函数将字符串和数值计算结果拼接起来
  • 原文地址:https://blog.csdn.net/Brevity6/article/details/134326740