gpt4 book ai didi

java - 将默认 hibernate 消息委托(delegate)给约束组合中的验证失败

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

我正在开发一个应用程序,在该应用程序中使用约束组合将具有很大的值(value)。

例如,代替:

@Size(min=1, max=60)
@Pattern(regexp = "[a-zA-Z0-9]*")
protected String invoiceNumber;

我可以这样写:

@ValidInvoiceNumber
protected String invoiceNumber;

带有以下注释:

@Size(min=1, max=60)
@Pattern(regexp = "[a-zA-Z0-9]*")
@ReportAsSingleViolation
@Target({ METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = {})
@Documented
public @interface ValidInvoiceNumber {
String message() default "{someMessageCode}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

我面临的问题是,我希望从验证返回的约束违反消息不是一些通用的 @ValidInvoiceNumber 消息(如上面的 someMessageCode),而是失败的实际注释的消息.因此,例如,如果大小检查失败,我将返回一条大小错误默认消息。如果模式消息失败,我将收到模式错误默认消息。

目前我只是收到一般的@ValidInvoiceNumber 消息,它没有向用户提供足够的信息。

感谢您的帮助。

最佳答案

只需删除@ReportAsSingleViolation。这将为您提供每个失败约束的 ConstraintViolation。事实上,这也确保所有约束都得到验证。使用 @ReportAsSingleViolation 时,验证会在第一个验证错误时停止,并从您的案例中的主注释 (ValidInvoiceNumber) 返回消息。另请参阅相关的 Bean 验证规范部分 - http://beanvalidation.org/1.1/spec/#constraintsdefinitionimplementation-constraintcomposition

关于java - 将默认 hibernate 消息委托(delegate)给约束组合中的验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22566596/

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