장면
타사에서 인터페이스를 호출하고 매개 변수를 전달하며 일부 값은 고정 열거 값만 수신하고 빈 필드에 대한 판단은 이루어지지 않습니다.
해결하다
사용자 지정 확인, 확인 필드는 특정 열거형 값만 가능하며 필드가 비어 있으면 확인되고 오류 메시지가 반환됩니다.
(빈 필드는 확인을 원하지 않는 경우임)
이때 툴 클래스에 판단을 추가하여 빈 필드 검증의 오류 메시지 처리를 건너뛸 수 있습니다.
확인 코드:
오류 메시지를 반환하는 것은 확인이 올바르지 않다는 것을 나타내지만 빈 필드의 오류 메시지는 나중에 철자가 없기 때문에 빈 필드의 확인은 건너뜁니다.
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();
}
자바 사용자 지정 확인 엔터티 클래스는 고정된 열거형 값만 될 수 있습니다. 다음을 참조하세요.