У меня есть объект отсутствия PUT Запрос с параметрами (comment и dateMissing), которые можно редактировать во внешнем интерфейсе, но проблема в том, что оба должны редактироваться только тогда, когда мы действительно хотим.
Теперь я ограничен, чтобы заполнить параметры комментария и даты в теле JSON запроса PUT , чтобы убедиться, что он работает нормально, запрос работает хорошо, а объект отсутствия хорошо сохранив все данные. Дело в том, что я хотел бы сделать запрос PUT только для одного параметра, например комментария, а параметр dateMissing должен остаться с его исходным значением, а не преобразовываться в NULL, что происходит сейчас. ..
Подводя итог, я просто хочу редактировать параметры моего отсутствия ТОЛЬКО ЕСЛИ я передаю правильные значения в «comment» и «dateMissing» через JSON BODY моего запроса PUT, и если эти параметры являются пустыми в запросе JSON, просто оставьте мои значения по умолчанию для обоих параметров и не преобразуйте их в значения NULL.
Вот мой класс отсутствия:
@Entity
public class Absence {
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Id
@JsonView(View.Summary.class)
private int id;
@JsonView(View.Summary.class)
private Date dateMissing;
@JsonView(View.Summary.class)
private String comment;
@ManyToOne (fetch = FetchType.EAGER)
@JsonView(View.Summary.class)
@JoinColumn (name="student_id")
@JsonProperty(access = Access.READ_ONLY)
private MyAppUser userStudent;
//GETTERS N SETTERS N CONSTRUCTORS
}
Здесь мой контроллер отсутствия:
// Edit Absences
@JsonView(View.SummaryWithOthers.class)
@PutMapping("api/students/absences")
public Absence putAbsence(@RequestBody @Valid Absence absence) {
// if AbsenceRepo is not empty...
if (!myAbsenceRepository.findAll().isEmpty()) {
Absence absenceToEdit = myAbsenceRepository.findOneById(absence.getId());
absenceToEdit.setDateMissing(absence.getDateMissing());
absenceToEdit.setComment(absence.getComment());
myAbsenceRepository.save(absenceToEdit);
return absenceToEdit;
/////////////////////////--IDEA OF WHAT I THINK, BUT DOESN'T WORKS--500 STATUS ERROR --/////////////////////////////
// I want to fill the date value ONLY if the JSON BODY dateMissing is not empty,
// if it is empty it have to stay the original dateMissing
// and not convert to a NULL value!! I think it may be a way to do this similar
// to the bottom one but this one is returning 500 error when
// dateMissing is not being edited
//the idea is check if my json body request is not empty and then fill absence with new date
//but it isn't working as I excepted...
if (!absence.getDateMissing().toString().equals("{}")) {
absenceToEdit.setDateMissing(absence.getDateMissing());
}
///////////////////////////////////////////////////////////////////////////////////////////////////
} else {
return null;
}
}
запрос PUT JSON, использующий POSTMAN, который прекрасно работает, и без проблем изменяет оба значения:
{
"id": "3",
"dateMissing": "1574856133040",
"comment": "Ausencia médica"
}
запрос PUT JSON, который работает " почти "хорошо, но, хотя я не редактирую дату, Missing меняется на NULL, и то же самое, если я делаю это с комментарием, конечно:
{
"id": "3",
"comment": "Ausencia médica"
}
Извините за мой engli sh и многие многие T спасибо за тебя !!