我是JAXB的新手。我试图使用JAXB解组一个Foo对象。但是,未设置默认值。请告诉我我做错了什么
public class TestJAXBDefault{
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "foo")
public static class Foo {
@XmlElement(defaultValue = "Hello")
protected String bar;
}
@Test
public void testDefaultValue() {
Foo foo = JAXB.unmarshal(new StringReader("<foo></foo>"), Foo.class);
Assert.assertNotNull(foo.bar);
}
}
答案 0 :(得分:0)
您将字段Foo.bar映射到XML元素(使用@XmlElement)。 解组文档时,条形字段的值将设置为条形元素的内容。当bar元素存在但空时,将使用注释中指定的默认值。如果缺少,则 null 。
<foo></foo> -> Foo.bar is null
<foo><bar/></foo> -> Foo.bar is "Hello"
<foo><bar></bar></foo> -> Foo.bar is "Hello"
<foo><bar>baz</bar></foo> -> Foo.bar is "baz"