Я работаю с Spring и JAXB и хочу составить список различных DTO-объектов, чтобы
требуемый XML-ответ должен быть таким:
<root>
<dto_list>
<dto1>
<name>xxx</name>
</dto1>
<dto2>
<location>xxx</location>
</dto2>
</dto_list>
</root>
Предполагая, что объектами класса являются:
@XmlRootElement(name = "Dto1")
@XmlAccessorType(XmlAccessType.NONE)
public class Dto1 {
@XmlElement
private String name;
// setter/getters
}
и
@XmlRootElement(name = "Dto2")
@XmlAccessorType(XmlAccessType.NONE)
public class Dto2 {
@XmlElement
private String location;
// setter/getters
}
и класс оболочки:
@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.NONE)
public class DTOsWrapper {
private List<Object> dto;
public void setDto(List<Object> dto) {
this.dto = dto;
}
@XmlElementWrapper(name = "dto_list")
@XmlElements({
@XmlElement(name = "dto1", type = Dto1.class),
@XmlElement(name = "dto2", type = Dto2.class)
})
public List<Object> getDto() {
return dto;
}
}
и конечная точка:
@RestController
public class DTOEndpoint {
@Autowired
private IDTOService service;
@RequestMapping(value = "/restxml", produces = "application/xml")
public Object retrieveAllDTOs() {
DTOsWrapper o = service.findDtos(); //returns a DTOsWrapper obj of a list containing Dto objs, i.e Dto1, Dto2 etc
return o;
}
Я получаю {"error": "org.springframework.http.converter.HttpMessageConversionException: не удалось создать экземпляр JAXBContext для класса [class <> to.DTOsWrapper]: 1 число исключений IllegalAnnotationExceptions; у кого-нибудь есть подсказка?