Код: Выделить всё
@AllArgsConstructor
@RestController
@RequestMapping("/api/subject")
public class SubjectController {
private SubjectService subjectService;
@PostMapping
public void createSubject(@RequestBody SubjectCreationDTO subjectCreationDTO) {
LoggingController.getLogger().info(subjectCreationDTO.getTitle());
// subjectService.createSubject(subjectCreationDTO);
}
}
< /code>
и субъект@AllArgsConstructor
@Getter
@Setter
public class SubjectCreationDTO {
private String title;
}
< /code>
Поэтому я получаю эту ошибку при выполнении запроса сообщения: < /p>
json parse error: не может построить экземпляр
pweb.examhelper.dto.subject.SubjectCreationDTO< /code> (хотя, по крайней мере,
один создатель существует): не может десериализировать из значения объекта (no
делегат или создатель на основе свойств) "< /p>
< /blockquote> Я могу решить эту ошибку, добавив @noargsconstructor к субъектуреализации, < /code>, но почему это необходимо, когда в других случаях у меня почти точно такой же случай. < /p>
@PostMapping
public ResponseEntity createStudent(@RequestBody StudentCreationDTO studentCreationDTO) {
StudentDTO savedStudent = studentService.createStudent(studentCreationDTO);
return new ResponseEntity(savedStudent, HttpStatus.CREATED);
}
@AllArgsConstructor
@Getter
@Setter
public class StudentCreationDTO {
private String username;
private String firstName;
private String lastName;
private String email;
}
< /code>
Я понял, что в случае наличия более чем одного поля вам не нужно указывать @noargscstructor, а библиотека Джексона может проанализировать ввод JSON из тела так же хорошо. Мой вопрос заключается в том, почему у него есть такое поведение, и почему он не может разобрать, если у меня есть только одно поле в классе без конструктора по умолчанию, но это может, если у меня есть несколько полей?
Подробнее здесь: https://stackoverflow.com/questions/782 ... -creator-w