我有一些 RESTful 服务的问题,这些服务在参数中采用传输对象(基本上是一个 XML 对象,它将被解组到 POJO)。
@XmlRootElement(name = "myPojo")
public class MyPojo {
@XmlElement(name = "myField")
private Boolean myBoolean;
public void setMyBoolean(Boolean bool) {
myBoolean = bool;
}
public Boolean getMyBoolean() {
return myBoolean;
}
}
服务是这样的:
public class MyRestService {
@PUT
@Path("somewhere")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response update(MyPojo pojo) {
System.out.println("Boolean value: " + pojo.getMyBoolean();
}
}
如果我发布这个 XML 片段:
<myPojo>
<myField>false</myField>
</myPojo>
我有:
Boolean value: false
如果我发布这个 XML 片段:
<myPojo>
<myField>FALSE</myField>
</myPojo>
我有:
Boolean value: null
我在带有 Jersey 1.9.1 和 JAXB 2.2.7 的 Glassfish 4 下运行该代码。此外,在 Glassfish 2 下,我得到了一种不同的行为,即大写和小写都按预期解组。
所以,我真的很想知道发生了什么以及为什么布尔值的编组不同。
提前致谢