Java: spring boot не может проанализировать дату с углового момента

#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. Я нашел решение. Проблема была связана с методом, который я использовал для преобразования даты