我是靠谱客的博主 痴情溪流,最近开发中收集的这篇文章主要介绍Easypoi 导入校验处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

导入的时候先根据注解进行处理

	ExcelImportResult<TaskInfoNineDO> result = ExcelImportUtil.importExcelMore(file.getInputStream(), TaskInfoNineDO.class,
					importParams);
	List<TaskInfoNineDO> successList = result.getList();//成功
	List<TaskInfoNineDO> failList = result.getFailList();//失败
	List<TaskInfoNineDO> list = new ArrayList<TaskInfoNineDO>();//返回
	/**
			 * 校验注解
			 */
		 if(!failList.isEmpty()){
				//非空原因
				for(TaskInfoNineDO f:failList){
					BeanValidator.validate(f);
				}
			}
log.info("是否存在验证未通过的数据:" + result.isVerfiyFail());
log.info("验证通过的数量:" + successList.size());
log.info("验证未通过的数量:" + failList.size());

然后是BeanValidator对象验证器

/**
* @author 作者 xiaoxiao
*
*/
/** 对象验证器
 * @author think
 *
 */
public class BeanValidator {

	public static<T> void  validate (T object) throws ValidationException{
		
		Validator validator = Validation.buildDefaultValidatorFactory().getValidator();//获得验证器
		
		Set<ConstraintViolation<T>> constraintViolations = validator.validate(object); //执行验证
		
		if(CollectionUtils.isEmpty(constraintViolations)){
			return;
		}
		
		 throw new ValidationException(convertErrorMsg(constraintViolations));
		
	}

	/**
	 * 注释(转换异常信息)
	 * @param constraintViolations
	 * @return
	 * String
	 * @author xiaoxiao
	 * @param <T>
	*/
	private static <T> String convertErrorMsg(Set<ConstraintViolation<T>> set) {
		// TODO Auto-generated method stub
		Map<String,StringBuffer> errorMap = new HashMap<>();
		String property;
		for(ConstraintViolation<T> cv:set){
			//这里循环获取错误信息,可以自定义
			property = cv.getPropertyPath().toString();
			if(errorMap.get(property)!=null){
				errorMap.get(property).append(","+cv.getMessage());
			}else{
				StringBuffer sbBuffer = new StringBuffer();
				sbBuffer.append(cv.getMessage());
				errorMap.put(property, sbBuffer);
			}
		}
		return errorMap.toString();
	} 
	
校验自定义注解值

```bash
	@Excel(name = "事业部",orderNum = "1",width = 15)
	@NotNull(message = "部门不能为空")
	private String deptName;

异常在此抛出

    log.error(e.getMessage(), e);
	map.put("msg", e.getMessage());
	map.put("code", 500);
	TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

如果注解校验能通过的话最后在定义
StringBuffer errorMessage = new StringBuffer();//错误消息
errorMessage.append()错误消息返回到前端导出错误数据

最后

以上就是痴情溪流为你收集整理的Easypoi 导入校验处理的全部内容,希望文章能够帮你解决Easypoi 导入校验处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部