sql >> Databáze >  >> RDS >> Mysql

Požadavek odeslaný klientem byl syntakticky nesprávný pomocí @DateTimeFormat

Protože používáte RequestBody s application/json typ obsahu, Spring použije svůj MappingJackson2HttpMessageConverter převést váš JSON na objekt vašeho typu. Nicméně řetězec data, který zadáte, 11/14 neodpovídá žádnému z předem nakonfigurovaných vzorů data, a proto jej nemůže správně analyzovat. MappingJackson2HttpMessageConverter nebo přesněji ObjectMapper který to dělá, neví nic o @DateTimeFormat , jarní anotace.

Budete muset Jacksonovi sdělit, jaký vzor data chcete použít. Můžete tak učinit pomocí vlastního deserializátoru data

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);
        }
    }
}

Pak jednoduše označte své pole, aby Jackson věděl, jak jej deserializovat.

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

Můžete použít @DateTimeFormat pokud jste používali parametry formuláře zakódované v adrese URL s @ModelAttribute . Spring registruje některé převodníky, které dokážou převést hodnotu String z parametrů požadavku na Date objekt. Toto je popsáno v dedokumentace.




  1. Pojmenované příkazy MariaDB

  2. Správa souborů MDF na serveru SQL Server 2019

  3. Vkládání více hodnot do MySQL najednou

  4. Jak získám protokolování psycopg2 doby provádění dotazu?