JSR-303自定义注释

时间:2017-12-22 07:07:23

标签: java validation annotations hibernate-validator

我正在尝试实现自定义注释来验证我的字段。我们的想法是,只要注释字段为 try{ for(let i = 0; i < 6; i++) { const find = async () => { const found = await JobStatus.findOne({_id: mongoose.Types.ObjectId(data._id)}).exec(); console.log("Before "+i+" : " +found.number_of_items_processed) found.number_of_items_processed += 1 found.save(); console.log("After "+i+" : " +found.number_of_items_processed) } find() }//for(....) } catch (err) { console.log(err) ,验证就会失败。这样的事情。

null

现在如果这返回一个@RequiredProperty public abstract Person getPerson(); Person,我希望验证失败(理想情况下是自定义消息“Person field is null”)。

我试着这样做。

null

验证员。

@Documented
@Constraint(validatedBy = RequiredPropertyValidator.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE, TYPE_USE})
@ReportAsSingleViolation
public @interface RequiredProperty {

    String message() default "{javax.validation.constraints.RequiredProperty.message}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}

然而,这不起作用。它根本不验证。对象public class RequiredPropertyValidator implements ConstraintValidator<RequiredProperty, Object> { @Override public void initialize(RequiredProperty constraintAnnotation) { } @Override public boolean isValid(Object property, ConstraintValidatorContext context) { return property != null; } } 甚至从未传递给property方法。关于如何使其发挥作用的任何建议?

更新

删除空的isValid方法使其正常工作。但是,我不知道如何创建“人员”字段为空的自定义错误消息。这可能吗?

我在initialize文件中创建了一条自定义消息,但这只是一条静态消息,我想从运行时捕获实际字段。

0 个答案:

没有答案