【发布时间】:2016-04-20 22:52:05
【问题描述】:
我打算使用 JAXB 从 xsd 生成类并使用 xsd 中的默认值。 但是当我将 xs:boolean 元素的默认值设置为“true”时。该值未设置,我得到空指针异常,因为布尔对象值尚未初始化为 true。
<xs:element name="statsEnabled" type="xs:boolean" minOccurs="0" default="true"/>
我做错了什么?我们可以只为 xs:string 而不为 xs:boolean 设置默认值吗?
生成的xml文件是这样的:
public class Cluster {
@XmlElement(defaultValue = "true")
protected Boolean topoEnabled;
@XmlElement(defaultValue = "true")
protected Boolean statsEnabled;
public Boolean isTopoEnabled() {
return topoEnabled;
}
public Boolean isStatsEnabled() {
return statsEnabled;
}
}
当我尝试调用该函数时:
Cluster cluster = new cluster();
if(cluster.isTopoEnabled)
.....
或
if(cluster.isStatEnabled)
....
我收到空指针错误。虽然在我的代码中我已经处理了这个空值。
我只是想知道为什么默认值不起作用。我做错了什么,我该怎么办? 要么 是否默认值仅适用于 xs:string 元素而不适用于其他元素?
【问题讨论】:
-
你能展示一个发生这种情况的示例 XML
-
你一定认为你得到了
Boolean而不是boolean,所以当找到一个缺失的元素时会引发null......这实际上是一个错误。 Find here a workaround -
顺便说一句:你接受过答案吗 (meta.stackexchange.com/questions/5234/…)
-
@wero 感谢您让我知道接受答案。我以前不知道。
标签: java xsd jaxb boolean default