首页 > 解决方案 > 只显示 org.springframework.data.domain.Page 的内容,没有元数据

问题描述

我使用 spring-boot 和 apache cxf-rs 创建了其余控制器,它返回org.springframework.data.domain.Page带有实体的 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 的 Bean,由 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 格式显示完整页面?谢谢你的帮助!

标签: javaxmlrestcxfrs

解决方案


推荐阅读