我有下一个问题。
我必须将XLS的属性定义为Integer。当XMLAdapter(为我定义)接收到值,而不是接收null或空时,您收到0(因为de Integer解析emty''值为0),这在我的情况下是不正确的。我怎么知道这个值是来自“”还是0?我需要如果属性值为“”,则该值应为Null; if 0,应为0.对我而言,它是JAXB中的一个错误。
我读到:
JAXB: how to make JAXB NOT to unmarshal empty string to 0
但它不是我的解决方案。
我该怎么办?!
我定义了mi XMLAdapter:
public class IntegerAdapter extends XmlAdapter<Integer, Integer> {
@Override
public Integer marshal(Integer arg0) throws Exception {
return arg0;
}
@Override
public Integer unmarshal(Integer v) throws Exception {
return v;
}
}
我没有像XmlAdapter<String, Integer>
那样定义它,因为XLS属性的定义必须是Integer。
谢谢!
答案 0 :(得分:1)
您应该使用以下内容:
XmlAdapter<String, Integer>
我没有像
XmlAdapter<String, Integer>
那样定义它,因为 XLS属性的定义必须是Integer。
您可以使用@XmlSchemaType
注释来设置所需的架构类型。
@XmlJavaTypeAdapter(IntegerAdapter.class)
@XmlSchemaType(name="integer")
public Integer getAge() {
return age;
}