我对 JAXB 有一个小问题,但不幸的是我找不到答案。
我有一个类 Customer,有 2 个字段name和city,映射是使用注释完成的,并且两个字段都标记为必需且不可空。
@XmlRootElement(name = "customer")
public class Customer {
    enum City {
        PARIS, LONDON, WARSAW
    }
    @XmlElement(name = "name", required = true, nillable = false)
    public String name;
    @XmlElement(name = "city", required = true, nillable = false)
    public City city;
    @Override
    public String toString(){
        return String.format("Name %s, city %s", name, city);
    }
}
但是,当我提交这样的 XML 文件时:
<customer>
    <city>UNKNOWN</city>
</customer>
我将收到一个 Customer 实例,其中两个字段都设置为 null。
不应该有验证异常还是我在映射中遗漏了什么?
要解组我使用:
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(in);