JAXB默认值

时间:2015-06-26 15:19:09

标签: java jaxb

我是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);
    }
}

1 个答案:

答案 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"