Невозможно создать экземпляр `имя класса` (хотя, по крайней мере, на Creator существует) - PullRequest
1 голос
/ 07 марта 2019

У меня есть следующий класс, который я использую в качестве полезной нагрузки запроса:

public class SampleRequest {

    private String fromDate;
    private String toDate;

    // Getters and setters removed for brevity.
}

Я пытаюсь использовать его с этим ресурсом ниже (просто пытаюсь распечатать его на экране, чтобы увидеть, что происходит):

@PostMapping("/getBySignatureOne")
public ResponseEntity<?> getRequestInfo(@Valid @RequestBody SampleRequest signatureOneRequest) {

    System.out.println(signatureOneRequest.getToDate);
    System.out.println(signatureOneRequest.getFromDate);
}

Это запрос JSON, который я отправляю:

{
    "fromDate":"2019-03-09",
    "toDate":"2019-03-10"
}

Это ошибка, которую я получаю:

Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.test.app.payload.SampleRequest` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('fromDate'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.test.app.payload.SampleRequest` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('fromDate')
 at [Source: (PushbackInputStream); line: 1, column: 2]]

Я бы хотел знать, что здесь не так, я подозреваю, что это проблема с конструкторами, или что я где-то пропускаю какие-то аннотации, но я честно не уверен, где я ошибся.

1 Ответ

0 голосов
/ 07 марта 2019

Вам нужен конструктор со всеми параметрами:

public SampleRequest(String fromDate, String toDate) {

    this.fromDate = fromDate;
    this.toDate = toDate;

}

Или используя @AllArgsConstructor или @Data от lombok.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...