#angular #spring-boot #momentjs #jhipster #localdate
#угловой #spring-boot #momentjs #jhipster #localdate
Вопрос:
Я создал проект Jhipster с angular в качестве интерфейса. У меня есть реактивная форма в angular для ввода данных. Проблема в том, что когда я пытаюсь сохранить объект с атрибутом LocalDate, я сталкиваюсь с этой ошибкой:
JSON parse error: Cannot deserialize value of type `java.time.LocalDate` from String "2021-01-Tu": Failed to deserialize java.time.LocalDate: (java.time.format.DateTimeParseException) Text '2021-01-Tu' could not be parsed at index 8; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDate` from String "2021-01-Tu": Failed to deserialize java.time.LocalDate: (java.time.format.DateTimeParseException) Text '2021-01-Tu' could not be parsed at index 8↵ at [Source: (PushbackInputStream); line: 1, column: 27] (through reference chain: com.icomg.stariol.service.dto.ExerciceDTO["debut"])
Это то, что я делаю:
ExerciceDTO.java:
public class ExerciceDTO implements Serializable {
private Long id;
private String libelle;
private LocalDate debut;
private LocalDate fin;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getLibelle() {
return libelle;
}
public void setLibelle(String libelle) {
this.libelle = libelle;
}
public LocalDate getDebut() {
return debut;
}
public void setDebut(LocalDate debut) {
this.debut = debut;
}
public LocalDate getFin() {
return fin;
}
public void setFin(LocalDate fin) {
this.fin = fin;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ExerciceDTO)) {
return false;
}
return id != null amp;amp; id.equals(((ExerciceDTO) o).id);
}
@Override
public int hashCode() {
return 31;
}
// prettier-ignore
@Override
public String toString() {
return "ExerciceDTO{"
"id=" getId()
", libelle='" getLibelle() "'"
", debut='" getDebut() "'"
", fin='" getFin() "'"
"}";
}
}
exercice.model.ts
export interface IExercice {
id?: number;
libelle?: string;
debut?: Moment;
fin?: Moment;
calendrierFiscals?: ICalendrierFiscal[];
}
export class Exercice implements IExercice {
constructor(
public id?: number,
public libelle?: string,
public debut?: Moment,
public fin?: Moment,
public calendrierFiscals?: ICalendrierFiscal[]
) {}
}
excercice-update.component.html:
<mat-form-field appearance="fill">
<mat-label jhiTranslate="gatewayApp.exercice.debut" for="field_debut">Debut</mat-label>
<input id="field_debut" type="text" name="debut" matInput formControlName="debut" [matDatepicker]="picker1"/>
<mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
<mat-datepicker #picker1></mat-datepicker>
</mat-form-field>
<mat-form-field appearance="fill">
<mat-label jhiTranslate="gatewayApp.exercice.fin" for="field_fin">Fin</mat-label>
<input id="field_fin" type="text" matInput name="fin" [matDatepicker]="picker2" formControlName="fin"/>
<mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>
<mat-datepicker #picker2></mat-datepicker>
</mat-form-field>
упражнение-update.component.ts:
private createFromForm(): IExercice {
return {
...new Exercice(),
id: this.editForm.get(['id'])!.value,
libelle: this.editForm.get(['libelle'])!.value,
debut: moment(this.editForm.get(['debut'])!.value),
fin: moment(this.editForm.get(['fin'])!.value),
};
}
Комментарии:
1. Если это ваш ввод, дата
2021-01-Tu
выглядит так в неправильном формате2. Проблема в том, что я ввожу дату с угловой стороны. И формат там правильный, когда я отображаю его с помощью console.log()
3. Я нашел решение. Проблема была связана с методом, который я использовал для преобразования даты