gpt4 book ai didi

java - Hibernate自定义 validator ,如何设置propertyPath?

转载 作者:行者123 更新时间:2023-11-30 04:47:27 33 4
gpt4 key购买 nike

我们已经实现了自定义 validator 。

我们可以正常返回消息,但不能返回 propertyPath,我们如何才能将其返回?

在我们的对象中实现

@RequiredIfSet.List({
@RequiredIfSet(propertyPath = "reporterFirstName", field = "isFillingOutForSomeoneElse", dependentField = "reporterFirstName", message = "Reporter First may not be null"),
@RequiredIfSet(propertyPath = "reporterLastName", field = "isFillingOutForSomeoneElse", dependentField = "reporterLastName", message = "Reporter Last may not be null"),
@RequiredIfSet(propertyPath = "reporterContactPhone", field = "isFillingOutForSomeoneElse", dependentField = "reporterContactPhone", message = "Reporter Contact Phone may not be null"),
@RequiredIfSet(propertyPath = "reporterEmail", field = "isFillingOutForSomeoneElse", dependentField = "reporterEmail", message = "Reporter Email may not be null")
})

//约束类

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Constraint(validatedBy = RequiredIfSetValidator.class)
public @interface RequiredIfSet {
String field();
String dependentField();

Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String message() default "Field Required";
String propertyPath() default "";

@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
RequiredIfSet[] value();
}
}

//我们循环无效字段

List<String[]> invalidFields = new ArrayList<String[]>();
Iterator<ConstraintViolation<T>> iterator = cv.iterator();
while(iterator.hasNext()) {
ConstraintViolation<T> i = iterator.next();
String property = i.getPropertyPath().toString();
String message = i.getMessage();
invalidFields.add(new String[] { property, message });
}
EntityValidationDTO EVDTO = new EntityValidationDTO();
EVDTO.setStatus("fail");
EVDTO.setInvalidFields(invalidFields);
return EVDTO;

最佳答案

在“RequiredIfSetValidator”中,在方法 isValid 中添加如下内容:

if( !valid ) {
context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()).addNode("fieldName").addConstraintViolation();
}

这里是官方文档:http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html#example-custom-error

关于java - Hibernate自定义 validator ,如何设置propertyPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645975/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com