Маршал список объектов разных типов с JAXB - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю с 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; у кого-нибудь есть подсказка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...