Когато използвам JAXB, има нещо нередно.
Преобразувам обект в xml низ и всичко е наред.
Но когато конвертирам xml String обратно в обект, част от информацията се губи (всички те имат един и същи тип java.util.Date
).
В обект:public Date flightBaseDate;
В xml: <flightBaseDate>2013-09-16T00:00:00 08:00</flightBaseDate>
след демаршалиране, getFlightBaseDate()
връща null
.
Търсих в Google.
Следвайки едно предложение, използвах @ в моя обект.
Тогава това е:
@XmlElement(name = "timestamp", required = true)
public Date flightBaseDate;
Сигурен съм, че ще бъде идеално,
но...извежда изключение по следния начин:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions Class has two properties of the same name "flightBaseDate" this problem is related to the following location: at public java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.getFlightBaseDate() at com.wonders.nlia.omms.vo.FlightServiceInfoVo this problem is related to the following location: at public java.lang.String com.wonders.nlia.omms.vo.FlightServiceInfoVo.flightBaseDate at com.wonders.nlia.omms.vo.FlightServiceInfoVo
Защо JAXB не можа да направи разлика между свойството и неговия getMethod?
Как да го решим?
Платформа: jdk7 win7 eclipse tomcat wtp
Моят демаршалинг код е:
JAXBContext context = JAXBContext.newInstance(FlightServiceInfoVo.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
FlightServiceInfoVo flightServiceInfoVo =(FlightServiceInfoVo)unMarshaller.unmarshal(new StringReader(flightServiceInfoVoXml));
flightServiceInfoVoXml е низ.