パラメータで転送オブジェクト (基本的には、POJO にアンマーシャリングされる XML オブジェクト) を受け取る RESTful サービスに問題があります。
@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 では、大文字と小文字の両方が期待どおり非整列化されるという別の動作が得られました。
そのため、何が起こっているのか、ブール値のマーシャリングが異なる理由を知りたいと思っています。
前もって感謝します