【问题标题】:Jackson and Bean Validation: Deserialize empty String as nullJackson 和 Bean 验证:将空字符串反序列化为 null
【发布时间】:2015-03-10 23:06:12
【问题描述】:

我有一个使用 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 或为字符串编写自己的反序列化器。两者似乎都不是好的解决方案。还有其他想法吗?

【问题讨论】:

    标签: jackson resteasy bean-validation


    【解决方案1】:

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

    另一种方法是写你的own custom constraint

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-20
      • 2012-06-30
      • 1970-01-01
      • 2019-12-19
      • 2022-01-08
      • 2015-03-23
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多