使用Groovy特性进行JSR-303 bean验证(Hibernate Validator)

时间:2015-04-24 10:07:24

标签: groovy jackson bean-validation

我遇到了使用 Groovy 类进行JSR-303 bean验证的问题,该类使用其他字段(以及它们的约束)实现Traits。让我举个简单的例子。我有一个名为ClientInfo的课程,如下所示:

class ClientInfo implements AddressInfo, ContactInfo, BusinessEntity { }

它实现了3个提供额外信息的特征。 AddressInfo可能如下所示:

trait AddressInfo {
    @Size(max = 128)
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    String contactName

    @Size(max = 255)
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    String addressLine1

    @Size(max = 255)
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    String addressLine2

    @Size(max = 32)
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    String postalCode

    @Size(max = 64)
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    String city

    @Size(max = 3)
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    String countryCode
}

到目前为止一切看起来都不错。约束验证失败时会出现问题。例如,如果countryCode实例验证期间ClientInfo字段失败,则会在AddressInfo__countryCode字段名称下显示错误消息:

{"AddressInfo__countryCode":"size must be between 0 and 3"}

这是由于来自该特征的字段被编译成例如: AddressInfo__countryCodeAddressInfo__addressLine1等等,为这些字段提供getter和setter。

我尝试在Jackson字段@JsonProperty('countryCode')字段上使用countryCode注释AddressInfo,但它没有帮助(注释已添加到已编译的类中) )。

我的问题是:可以使用例如Jackson属性映射器为实现的特征提供的字段在@JsonProperty('...')注释中提供字段名称?我将非常感谢你的帮助。

PS:我正在使用'org.hibernate:hibernate-validator:5.1.3.Final' bean验证实现(也许这应该是更改)。

0 个答案:

没有答案