在grpc中校验java bean

定义一个工具类

import java.util.Set;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.xml.bind.ValidationException;  


public class ValidationUtil {  

    private static Validator validator;  

    static {  
        ValidatorFactory vf = Validation.buildDefaultValidatorFactory();  
        validator = vf.getValidator();  
    }  



    public static <T> void validate(T t, Class<?>... groups) throws ValidationException{  
        Set<ConstraintViolation<T>> set =  validator.validate(t, groups);  
        if(set.size()>0){  
            StringBuilder validateError = new StringBuilder();  
            for(ConstraintViolation<T> val : set){  
                validateError.append(val.getMessage() + " ;");  
            }  
            throw new ValidationException(validateError.toString());              
        }  
    }  

}

被校验的java bean需要被注解

import java.util.Date;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.univer.time.validation.AllowedValues;
import com.univer.time.validation.ScheduleJobAdd;
import com.univer.time.validation.ScheduleJobUpdate;

import lombok.Data;

@Data
public class ScheduleJob {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String code;

    @NotBlank(message = "jobName not null",groups = {ScheduleJobAdd.class, ScheduleJobUpdate.class})
    private String jobName;

    @NotBlank(message = "jobGroup not null",groups = {ScheduleJobAdd.class, ScheduleJobUpdate.class})
    private String jobGroup;

调用方法做校验


            // 校验请求数据
            ValidationUtil.validate(scheduleJob, ScheduleJobAdd.class);

这里的业务逻辑是,如果有字段校验不通过,就抛出异常 使用的时候对异常进行捕捉,try-catch处理

Copyright © wu_mingsheng@126.com 2017 all right reserved,powered by Gitbook该文件最后修改时间: 2020-01-19 13:42:27

results matching ""

    No results matching ""