我需要使用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>
我可以为双变量使用注释获得相同的行为吗?
答案 0 :(得分:1)
也许您应该使用不同的技术来验证XML
结构,使用XML Schema Definition (XSD)
或使用解析器迭代孔文档。
我认为您与XML
和Bean验证有点混淆,请记住XML
存储Bean值的String
表示,以及 JSR-303 是关于价值验证:
对于String
,您有一个空值表示,而且:<myString></myString>
很好,因为它等同于此""
。
对于Double
,没有空表示,因此<myDouble></myDouble>
为空值。