Только содержимое org.springframework.data.domain.Отображается страница без метаданных

#java #xml #rest #cxfrs

#java #xml #остальное #cxfrs

Вопрос:

Я создал контроллер rest с помощью spring-boot и apache cxf-rs, который возвращает Page ( org.springframework.data.domain.Page ) с объектами. Моя проблема в том, что страница в формальном формате xml возвращает только содержимое с сущностями, без метаданных (разбиение на страницы, сортировка …). В формате json все работает нормально — страница отображает содержимое и метаданные.

 import org.springframework.data.domain.jaxb.PageAdapter;

    @GET
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    @XmlJavaTypeAdapter(PageAdapter.class)
    Page<Monitor> getAllMonitors(@PathParam("page") int page, 
        @PathParam("size") int size){
        Pageable pageable = PageRequest.of(page, size);
        return repository.findAll(pageable);
    }
  

В классе конфигурации у меня есть компонент для XML, предоставляемый cxf-rs:

     @Bean
    public JAXBElementProvider jaxbElementProvider(){
        JAXBElementProvider jaxbElementProvider = new JAXBElementProvider();
        jaxbElementProvider.setSingleJaxbContext(true);
        jaxbElementProvider.setExtraClass(new Class[] {Monitor.class});
        return jaxbElementProvider;
    }
  

Я ожидаю увидеть страницу, подобную этой:

 <sd:page xmlns:sd="http://www.springframework.org/schema/data/jaxb" xmlns:atom="http://www.w3.org/2005/Atom">
  <content>
    <Monitor>
    ... content
    </Monitor>
  </content>
  <pageable>
  ...
  </pageable>
  <sort>
  ...
  </sort>
  <totalElements>...</totalElements>
  <numberOfElements>...</numberOfElements>
</sd:page>
  

Но я получаю страницу только с содержимым:

 <sd:page xmlns:sd="http://www.springframework.org/schema/data/jaxb" xmlns:atom="http://www.w3.org/2005/Atom">
  <content>
    <Monitor>
    ... content
    </Monitor>
  </content>
</sd:page>
  

Что я должен сделать для отображения полной страницы в формате xml?
Спасибо за любую помощь!