我使用spring-boot和apache cxf-rs创建了rest控制器,该控制器返回带有实体的Page(org.springframework.data.domain.Page
)。我的问题是xml形式的Page仅返回带有实体的Content,而没有元数据(可分页,排序...)。以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);
}
在配置类中,我有一个cxf-rs提供的XML Bean:
@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格式显示完整页面? 感谢您的帮助!