sql >> Database teknologi >  >> RDS >> Mysql

Anmodningen sendt af klienten var syntaktisk forkert ved brug af @DateTimeFormat

Fordi du bruger RequestBody med en application/json indholdstype, vil Spring bruge sin MappingJackson2HttpMessageConverter at konvertere din JSON til et objekt af din type. Men den datostreng, du angiver, 11/14 matcher ikke nogen af ​​de forudkonfigurerede datomønstre og kan derfor ikke parse det korrekt. MappingJackson2HttpMessageConverter , eller mere specifikt ObjectMapper der gør jobbet, ved ikke noget om @DateTimeFormat , en forårsanmærkning.

Du bliver nødt til at fortælle Jackson, hvilket datomønster du vil bruge. Du kan gøre det med en brugerdefineret dato-deserializer

public class CustomDateDeserializer extends JsonDeserializer<Date> {
    @Override
    public Date deserialize(JsonParser jp, DeserializationContext ctxt)
            throws IOException, JsonProcessingException {
        SimpleDateFormat format = new SimpleDateFormat("MM/yy");
        String date = jp.getText();

        try {
            return format.parse(date);
        } catch (ParseException e) {
            throw new JsonParseException(e);
        }
    }
}

Så skal du blot kommentere dit felt, så Jackson ved, hvordan man deserialiserer det.

@JsonDeserialize(using = CustomDateDeserializer.class)
private Date test;

Du kan bruge @DateTimeFormat hvis du brugte url-kodede formularparametre med @ModelAttribute . Spring registrerer nogle konvertere, der kan konvertere en strengværdi fra en anmodningsparametre til en Date objekt. Dette er beskrevet i deokumentering.




  1. Mysql-forespørgsel for at finde ID, hvor flere betingelser opfyldes for en kolonne

  2. MySQL implementering af ray-casting algoritme?

  3. Django Admin - login

  4. Hvad er forskellen mellem skema og database?