如何解决如何使用休眠验证器传递不同的错误代码进行验证?
我正在使用休眠验证器在我的应用程序中实现验证。我还使用了自定义注释和自定义验证器来满足业务验证需求。它工作正常,并且能够根据实现获取特定的错误消息。但是,现在我也想将错误代码(类似于下面的代码片段中给出的内容)连同错误消息一起返回给调用validate方法的方法的每个验证。
我已经阅读了有关休眠验证的文档,但找不到满足此要求的任何内容。有人可以帮我实现这种情况下的错误代码。
@ValidStateInCountry(code=006,message="Invalid state for given country")
@ValidZipInCountry(code=007,message="Invalid zip for given country")
public class Address {
@NotBlank(code=001,message="address line is mandatory")
private String addressLine;
@ValidCountry(code=002,message="Invalid Country name")
@NotBlank(code=003,message="Country name is mandatory")
private String country;
@NotBlank(code=004,message="state is mandatory")
private String state;
@NotBlank(code=005,message="zip is mandatory")
private String zipCode;
}
解决方法
首先,我们不支持内置约束,因此您必须自己重新实现它们才能添加此功能。
第二,我认为您需要的是所谓的动态有效载荷,您可以在ConstraintViolation
中创建动态有效载荷,并将其附加到ConstraintValidator
。然后,您可以将违规包装为特定于Hibernate Validator的风格,并加以利用。有关完整的示例,请参见https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-dynamic-payload。
您可以通过实施initialize()
:https://github.com/eclipse-ee4j/beanvalidation-api/blob/2.0.2/src/main/java/javax/validation/ConstraintValidator.java#L50从注释中提取错误代码一次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。