春季启动-休息分页返回消息HttpMessageNotWritableException

时间:2018-08-13 13:01:31

标签: spring spring-mvc spring-boot pagination spring-data-elasticsearch

我试图用Spring Boot 1.5.3和Elasticsearch为我的api实现分页,但是它返回HttpMessageNotWritableException:不能写JSON文档。

我认为ElasticsearchRepository已经提供了分页和排序方法,因此我尝试使用它然后将可分页的对象返回给控制器。而且我认为控制器返回结果时会发生错误。

这是控制器。

@GetMapping(value = "/client",
            params = { "page", "size" })
public Page<Client> getAllClient( @RequestParam("page") int page, @RequestParam("size") int size){
    return clientService.getAllClient(page, size);
}

服务。

public Page<Client> getAllClient(int page, int size) {
    Page<Client> resultPage = clientRepository.findAll(new PageRequest(0, 3));
    return resultPage;
}

存储库。

public interface ClientRepository extends 
ElasticsearchRepository<Client, String> {
    public Client findByName(String name);
}

我已经将Lombok用于我的实体,所以应该不是问题。

@Data
@Document(indexName = "customer", type = "client")
public class Client {

    @Id
    private String id;

    private String name;

    private String city;

    private String phone;
}

pom.xml中的依赖项

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.8</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

当我向与控制器映射的URL发出HTTP GET请求时,出现以下错误日志。

WARN 12616 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON document: (was java.lang.NullPointerException) (through reference chain: org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl["facets"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl["facets"])

我想知道我是否忘记了项目中的任何配置。

1 个答案:

答案 0 :(得分:-1)

我刚刚发现,在我更改为Spring Boot版本2.0.4之后,它可以工作!

但是我仍然想知道如何在1.5.3版中做到这一点。