我有一个带有单个 Long 变量的类,我希望我的输入 xml 被解组到。当我运行 unmarshal(附加单元测试)时,我在 ValidationEventHandler 中抛出以下错误
[severity=ERROR,message=For input string: "",locator=node=null,object=null,url=null,line=1,col=96,offset=-1]]
LinkedException: java.lang.NumberFormatException: For input string: ""
类和单元测试如下所示 -
@XmlRootElement
public class Annotation {
private Long creatorNo;
public Long getCreatorNo() {
return creatorNo;
}
public void setCreatorNo(Long creator) {
creatorNo = creator;
}
}
单元测试 -
public class AnnotationTest {
@Test
public void testUnmarshall() throws Exception {
final String inputXML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><annotation><creatorNo></creatorNo></annotation>";
final JAXBContext jaxbContext = JAXBContext.newInstance(Annotation.class);
final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setEventHandler(new UnmarshallerValidationEventHandler());
final Annotation annotationObject = (Annotation)unmarshaller.unmarshal(new StringReader(inputXML));
}
}
从外观上看,Jaxb 不喜欢将空元素传递给 Long 类型。但是现在,如果我在“注释”类中将“creatorNo”的类型更改为整数而不是 Long,则不会引发异常,Jaxb 只会创建将“creatorNo”设置为 0 的类。那么为什么会有这种不同的行为?
我所追求的真正行为是我希望 Jaxb 将“creatorNo”视为可选并将其设置为 NULL 并为空 XML 元素。这可能吗?
谢谢