@NotNull for XML验证中的Double

时间:2017-12-13 13:56:58

标签: java xml data-binding annotations bean-validation

我需要使用JSR-303注释验证输入中XML的结构。所以我希望我的XML包含所有必需的标记,并且我接受XML标记根本不包含任何值。 所以必须有所有标签,它们可以是空的。

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

对于istance:

<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>

我可以为双变量使用注释获得相同的行为吗?

1 个答案:

答案 0 :(得分:1)

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

我认为您与XML和Bean验证有点混淆,请记住XML存储Bean值的String表示,以及 JSR-303 是关于价值验证:

  • 对于String,您有一个空值表示,而且:<myString></myString>很好,因为它等同于此""

  • 对于Double,没有空表示,因此<myDouble></myDouble>为空值。