当前位置: 首页 > 知识库问答 >
问题:

通过RestTemplate使用Spring分页响应时出现不存在错误

米项禹
2023-03-14

我有一个终点

    @GetMapping()
    public Page<String> list(String search, Pageable pageable)

api响应看起来像

json prettyprint-override">{
  "content": [
    "a00000",
    "b11111"
  ],
  "first": true,
  "last": true,
  "totalPages": 1,
  "totalElements": 2,
  "numberOfElements": 2,
  "size": 2000,
  "number": 0,
  "pageable": {
    "sort": {
      "unsorted": true,
      "sorted": false
    },
    "offset": 0,
    "pageSize": 2000,
    "pageNumber": 0,
    "unpaged": false,
    "paged": true
  }
}

我正在尝试使用SpringV2在另一个微服务中使用该endpoint。5.0 via

  override fun getNamesById(id: String): List<String> {
        val uri = URIBuilder("$baseUrl/api/names")
            .setParameter("search", "id==$id")
            .build()

        try {
            val response = restTemplate.exchange(
                uri,
                HttpMethod.GET,
                null),
                typeReference<RestResponsePage<String>>()
            )

            return response.body!!.content

        } catch (ex: HttpServerErrorException) {
            throw handleServerError(ex)
        }
    }

  inline fun <reified T> typeReference() = object : ParameterizedTypeReference<T>() {}

resresponsepage的实现遵循这篇文章来处理分页响应。

@JsonIgnoreProperties(ignoreUnknown = true)
public class RestResponsePage<T> extends PageImpl<T> {

    @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
    public RestResponsePage(@JsonProperty("content") List<T> content,
                            @JsonProperty("number") int number,
                            @JsonProperty("size") int size,
                            @JsonProperty("totalElements") Long totalElements) {

        super(content, PageRequest.of(number, size), totalElements);
    }

    public RestResponsePage(List<T> content, Pageable pageable, long total) {
        super(content, pageable, total);
    }

    public RestResponsePage(List<T> content) {
        super(content);
    }

    public RestResponsePage() {
        super(new ArrayList<>());
    }
}

然而,当运行我的应用程序时,我得到了这个错误

java.lang.TypeNotPresentException: Type com.test.RestResponsePage not present
...
    at com.test.anotherService$getNamesById$$inlined$typeReference$1.<init>(anotherService.kt:75)
    at com.test.anotherService$getNamesById(anotherService.kt:77)

如何正确使用此终结点?

共有1个答案

姚钊
2023-03-14

将Java类转换为静态编程语言类。

 类似资料:
  • 一切正常,但我不能使用RestTemplate getForEntity方法使用我的endpoint: 我应该提供什么类来成功反序列化我的实体页面?

  • 在服务器端,我正在使用一个HTTP API,它以页面形式返回结果。如中所示,响应包含x个结果,如果有超过0的结果,我可以再次调用它以获得下一个x个结果。x可以任意选择直到API的最大页面大小。 现在,我想要在WebSocket上高效地流式传输全套结果,而不会使它不堪重负(施加背压)。最初,我构建了整个resultset,然后从中创建了一个源代码: 这样可以工作,WebSocket客户机以其最大速度

  • 问题内容: 我正在使用spring数据(mongoDb),并且有我的存储库: 然后我有一个控制器: 一切正常,但是我无法使用RestTemplate getForEntity方法消耗端点: 我应该提供什么课程来成功反序列化实体页面? 问题答案: new TypeReference >() {} 该语句的问题在于,Jackson无法实例化抽象类型。您应该为Jackson提供有关如何实例化具体类型的信

  • 我找了很多,但没有找到任何解决办法。我试图通过android使用客户端将带有base64编码的图像的json对象发布到web服务。 http.springframework.http.converter.httpMessageNotWritableException:无法编写JSON:JsonObject(通过引用链:com.google.gson.JsonObject[“AsbigDecimal

  • 我不熟悉Spring RestTemplate。 但是对于这个项目,我必须使用Spring RestTemplate发送一个POST调用来使用rest API。

  • 下面是响应(域模型)的Java类。我已经将排序数据建模为这个类中的一个字段,这可能是错误的,应该有一种方法将它在一个可分页对象中传递给超类。 这是自定义的反序列化程序,归入https://blog.thecookinkitchen.com/how-to-consump-page-respons-from-a-service-in-spring-boot-97293c18ba 下面是一个JUnit测