我使用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
或为字符串编写自己的反序列化器。两者似乎都不是好的解决方案。还有其他想法吗?
答案 0 :(得分:1)
如果您想接受空字符串,可以使用@Pattern
约束匹配空字符串:@Pattern(regexp = "^$|(.){2}")
或@Pattern(regexp = "^$|..
。
另一种方法是编写own custom constraint。