У меня проблема с некоторыми службами RESTful, которые принимают объект передачи в параметре (в основном объект XML, который будет немаршрутизирован POJO).Как JAXB/Джерси unmarshall имеет значение Boolean?
@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
Я бегу, что код под Glassfish 4 с Джерси 1.9.1 и JAXB 2.2.7. Кроме того, в Glassfish 2 у меня появилось другое поведение, в котором как прописные, так и строчные буквы не отображаются, как ожидалось.
Итак, мне очень любопытно узнать, что происходит, и почему сортировка булевых отличается.
Заранее спасибо
Попытка использовать примитивный тип, а не типа обертки. Я предполагаю, что значение будет иметь значение [Boolean.valueOf (String)] (http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#valueOf (java. lang.String)) дает. –