Spring MVC - Страница данных, отформатированная как JSON, получает ошибку: невозможно определить аргументы типа для ResponseEntity <> - PullRequest
1 голос
/ 05 апреля 2019

Я следую за первым ответом на этот вопрос: Spring MVC 3: вернуть страницу данных Spring в формате JSON

Я получаю ошибку компиляции Cannot infer type arguments for ResponseEntity<> в следующем блоке кода:

@GetMapping("all")
@RequestMapping(produces = {MediaType.APPLICATION_JSON_VALUE})
public HttpEntity<PagedResources<SearchDto>> get(@PageableDefault Pageable p, PagedResourcesAssembler<SearchDto> assembler) {
    Page<SearchDto> results = searchService.findAll(p);
    return new ResponseEntity<>(assembler.toResource(results), HttpStatus.OK);
}

Когда я впервые пытался использовать этот код, мне не хватало зависимостей, поэтому я добавил:

<dependency>
    <groupId>org.springframework.hateoas</groupId>
    <artifactId>spring-hateoas</artifactId>
</dependency>

Я использую снимок, поэтому я не включил версию.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.BUILD-SNAPSHOT</version>
</parent>

Я попытался изменить строку проблемы на:

return new ResponseEntity<PagedResources<SearchDto>>(assembler.toResource(results), HttpStatus.OK);

но вместо этого получите ошибку The constructor ResponseEntity<PagedResources<SearchDto>>(PagedResources<Resource<SearchDto>>, HttpStatus) is undefined. Это приходит с предложениями:

  1. Remove arguments to match ResponseEntity<PagedResources<SearchDto>>( HttpStatus) Это не вернет мои результаты поиска вообще.

  2. Cast argument 1 into MultiValueMap<String,String>. Я просмотрел родительские классы PagedResources, и он не смог привести к MultiValueMap. Кроме того, было бы проблемой, если бы мои числа входили в виде строк в JSON.

Так что я хотел бы иметь возможность возвращать JSON с метаданными страницы и набором результатов. Спасибо за чтение.

...