#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?
Спасибо за любую помощь!