Spring Data Pagination使用JSONView不返回任何结果


问题内容

我在REST控制器中使用Spring数据分页并返回Paged实体。我想借助JSONViews控制作为JSON返回的数据。

当我返回单个对象时,我能够实现结果。但是,当我返回Page时,我收到了空白的JSON作为响应。

以下是我的方法签名。

@JsonView(TravelRequestView.MyRequests.class)
@RequestMapping("/travel/requests")
public Page<TravelRequest> getUserTravelRequests(
            @RequestParam("ps") int pageSize, @RequestParam("p") int page,
            @RequestParam(defaultValue = "", value = "q") String searchString)

删除@JsonView批注时,我能够收到响应。


问题答案:

尝试下面的代码,

@Configuration
public class MyInterceptorConfig extends WebMvcConfigurerAdapter{

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
      MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
      ObjectMapper mapper = new ObjectMapper() {
        private static final long serialVersionUID = 1L;
        @Override
        protected DefaultSerializerProvider _serializerProvider(SerializationConfig config) {
          // replace the configuration with my modified configuration.
          // calling "withView" should keep previous config and just add my changes.
          return super._serializerProvider(config.withView(TravelRequestView.MyRequests.class));
        }        
      };
      mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
      converter.setObjectMapper(mapper);
      converters.add(converter);
    }

尽管我不想为此功劳,但这是来自

它将检索使用jsonview(TravelRequestView.MyRequests.class)注释的实体的所有变量以及未使用jsonview注释的所有变量。如果您不想要对象的某些属性,请使用不同的视图进行注释。