Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @XML验证中双精度的NotNull_Java_Xml_Data Binding_Annotations_Bean Validation - Fatal编程技术网

Java @XML验证中双精度的NotNull

Java @XML验证中双精度的NotNull,java,xml,data-binding,annotations,bean-validation,Java,Xml,Data Binding,Annotations,Bean Validation,我需要使用JSR-303注释验证输入中XML的结构。因此,我希望我的XML包含所有必需的标记,如果XML标记不包含任何值,我接受。 所以必须有所有的标签,它们可以是空的 问题是,如果@NotNull注释对字符串很有效(因此我可以让xml标记不带值),那么对于双变量,我就不能使用它,因为如果我清空标记,它会像删除标记一样返回错误 对于远程: <extTag> <myString>Hello</myString> -> @NotNull String

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

问题是,如果@NotNull注释对字符串很有效(因此我可以让xml标记不带值),那么对于双变量,我就不能使用它,因为如果我清空标记,它会像删除标记一样返回错误

对于远程:

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

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

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

你好->@NotNull字符串myString;->好啊
->@NotNull字符串myString;->好啊
->@NotNull字符串myString;->错误
对于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>

12.00->@NotNull Double myDouble;->好啊
->@NotNull Double myDouble;->错误
->@NotNull Double myDouble;->错误

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

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

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

  • 对于
    String
    您有一个空值表示,这个:
    很好,因为它等效于这个

  • 对于
    Double
    而言,没有空表示,因此此
    为空值