本文主要是介绍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;@ExcelIgnoreprivate 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<ExcelData> excelDataList = new ArrayList<>();// list数据添加逻辑 ……// 空数据校验boolean allFieldsNotBlank = excelDataList.stream().allMatch(ValidationUtils::isNotBlankFields);if (!allFieldsNotBlank) {// 有空数据时的处理}
通过调用就可以校验标注@NotBlank注解的属性值是否为空了。
这篇关于Java @NotBlank反射校验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!