Jackson和Bean验证:将空String反序列化为null

时间:2015-03-10 23:06:12

标签: jackson resteasy bean-validation

我使用Jackson和Bean验证的RESTeasy应用程序。 POJO可能就像这样:

public class Foo {

    @Size(min = 2)
    private String bar;

}

如果客户端发送bar属性,则验证Bar。并期望:如果客户没有发送财产,将不会验证任何内容。

如果客户端发送一个空字符串,我将会遇到约束违规。这可能是正确的,但很难控制空输入字段的值是什么。例如,在我的角度应用程序中,如果用户没有输入任何内容,则该字段将不存在。一旦他进入并删除某些东西,我就会有一个空字符串。

我认为我可以通过DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT配置Jacksons行为,但是answered here这只适用于POJO而不适用于字符串。我看到的唯一方法是不使用@Size或为字符串编写自己的反序列化器。两者似乎都不是好的解决方案。还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

如果您想接受空字符串,可以使用@Pattern约束匹配空字符串:@Pattern(regexp = "^$|(.){2}")@Pattern(regexp = "^$|..

另一种方法是编写own custom constraint