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注释的所有变量。如果您不想要对象的某些属性,请使用不同的视图进行注释。