Java @NotBlank反射校验

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

pojo代码如下:

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import org.apache.poi.ss.usermodel.Font;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;


@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class ExcelData implements Serializable {

	private static final long serialVersionUID = 1L;

	@NotBlank(message = "类型不能为空")
	@HeadFontStyle(color = Font.COLOR_RED)
	@ExcelProperty(value = "类型")
	private String type;

	@NotBlank(message = "编号不能为空")
	@HeadFontStyle(color = Font.COLOR_RED)
	@ExcelProperty(value = "编号")
	private String code;

	@HeadFontStyle(color = Font.COLOR_NORMAL)
	@ExcelProperty(value = "备注")
	private String comment;
	
	@ExcelIgnore
	private Long typeId;


}
工具类代码如下:

import javax.validation.constraints.NotBlank;
import java.lang.reflect.Field;
import java.util.Objects;


public class ValidationUtils {
	public static boolean isNotBlankFields(Object object) {
		Field[] fields = object.getClass().getDeclaredFields();
		for (Field field : fields) {
			if (field.isAnnotationPresent(NotBlank.class)) {
				field.setAccessible(true);
				try {
					Object value = field.get(object);
					if (Objects.isNull(value) || value.toString().trim().isEmpty()) {
						return false;
					}
				} catch (IllegalAccessException e) {
                    // 异常处理
				}
			}
		}
		return true;
	}
}
调用代码如下:
    List excelDataList = new ArrayList<>();
    // list数据添加逻辑 ……

    // 空数据校验
	boolean allFieldsNotBlank = excelDataList.stream().allMatch(ValidationUtils::isNotBlankFields);

		if (!allFieldsNotBlank) {
			// 有空数据时的处理
		}

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

你可能感兴趣的:(Java基础,Java,web开发,java,开发语言)