Java 검사 엔터티 클래스는 비어 있지 않은 필드만 검사합니다.

장면

타사에서 인터페이스를 호출하고 매개 변수를 전달하며 일부 값은 고정 열거 값만 수신하고 빈 필드에 대한 판단은 이루어지지 않습니다.

해결하다

사용자 지정 확인, 확인 필드는 특정 열거형 값만 가능하며 필드가 비어 있으면 확인되고 오류 메시지가 반환됩니다.

(빈 필드는 확인을 원하지 않는 경우임)

이때 툴 클래스에 판단을 추가하여 빈 필드 검증의 오류 메시지 처리를 건너뛸 수 있습니다.

확인 코드:

오류 메시지를 반환하는 것은 확인이 올바르지 않다는 것을 나타내지만 빈 필드의 오류 메시지는 나중에 철자가 없기 때문에 빈 필드의 확인은 건너뜁니다.

 private static Validator validator;
    static {
        validator = Validation.buildDefaultValidatorFactory().getValidator();
    }

    public static String ignoreEmpty(Object object){
            //使用Gson 避免实体类对象有JsonField注解转json会以注解为准
            Gson gson = new Gson();
            String json = gson.toJson(object);
            JSONObject jsonObject = JSON.parseObject (json);
            StringBuilder msg = new StringBuilder();
            //返回的实体可能有些字段是没有的,所以不能单纯by对象validate校验就完事
            Set<ConstraintViolation<Object>> constraintViolationSet= validator.validate(object);
            if(!constraintViolationSet.isEmpty()){
                for (ConstraintViolation<Object> constraint:constraintViolationSet) {
                   String fieldName = constraint.getPropertyPath().toString();
                   if(null == jsonObject){//字段为空校验出来的错误信息不拼接,认为是可过的
                       continue;
                   }
                    msg.append(constraint.getMessage());
                }
            }
            return msg.toString();
    }

자바 사용자 지정 확인 엔터티 클래스는 고정된 열거형 값만 될 수 있습니다. 다음을 참조하세요.

최대 절전 모드 유효성 검사, 스프링 유효성 검사 사용자 지정 유효성 검사 ------ 지정된 값만 가능_@유효한 검사 속성 값은 고정된 값입니다_ldcn614의 블로그-CSDN 블로그

Supongo que te gusta

Origin blog.csdn.net/ss_Tina/article/details/129850454
Recomendado
Clasificación