@NotNull for Double in XML 验证

@NotNull for Double in XML Validation

我需要使用 JSR-303 注释验证输入中 XML 的结构。所以我希望我的 XML 包含所有必需的标签,如果 XML 标签根本不包含任何值,我接受。 所以标签一定要全,可以为空

问题是,如果 @NotNull 注释对字符串很好用(所以我可以在 xml 标签中没有值),对于 Double 变量我不能使用它,因为如果我清空标签,它 returns 我的错误就像我也删除了标签。

例如:

<extTag>
  <myString>Hello</myString>   -> @NotNull String myString; -> OK!
</extTag>

<extTag>
  <myString></myString>        -> @NotNull String myString; -> OK!
</extTag>

<extTag>
                               -> @NotNull String myString; -> ERROR!
</extTag>

对于 Double 我想要相同的控件,但是当值为 null 时我得到错误!

<extTag>
  <myDouble>12.00</myDouble>   -> @NotNull Double myDouble; -> OK!
</extTag>

<extTag>
  <myDouble></myDouble>        -> @NotNull Double myDouble; -> ERROR!
</extTag>

<extTag>
                               -> @NotNull Double myDouble; -> ERROR!
</extTag>

我可以为 Double 变量获得相同的行为 od 字符串 使用注释吗?

也许您应该使用不同的技术来验证 XML 结构,使用 XML Schema Definition (XSD) 或使用解析器迭代 hole 文档。

我认为您对 XML 和 Bean Validation 有点困惑,请记住 XML 存储 Bean 值的 String 表示,而 JSR- 303 是关于值验证的:

  • 对于 String 你有一个空值表示,这个:<myString></myString> 很好,因为等同于这个 "".

  • 对于Double没有空表示,所以这个<myDouble></myDouble>是一个空值。