sql >> Database >  >> RDS >> Mysql

Het verzoek dat door de client is verzonden, was syntactisch onjuist met @DateTimeFormat

Omdat je RequestBody . gebruikt met een application/json inhoudstype, zal Spring zijn MappingJackson2HttpMessageConverter gebruiken om uw JSON te converteren naar een object van uw type. Ongeacht de datumreeks die u opgeeft, 11/14 komt niet overeen met een van de vooraf geconfigureerde datumpatronen en kan deze daarom niet correct ontleden. De MappingJackson2HttpMessageConverter , of meer specifiek de ObjectMapper die het werk doet, weet niets over @DateTimeFormat , een lente-annotatie.

U moet Jackson vertellen welk datumpatroon u wilt gebruiken. U kunt dit doen met een aangepaste datum-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);
        }
    }
}

Annoteer vervolgens uw veld zodat Jackson weet hoe hij het moet deserialiseren.

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

Je zou @DateTimeFormat kunnen gebruiken als u URL-gecodeerde formulierparameters gebruikte met @ModelAttribute . Spring registreert een aantal converters die een String-waarde van een verzoekparameter kunnen converteren naar een Date object. Dit wordt beschreven in de deocumentatie.




  1. Samengestelde primaire sleutel maken in MySQL

  2. Waarom geeft MySQL een foutmelding Niet toegestaan ​​om een ​​resultaatset van een functie te retourneren?

  3. Ruimte berekenen en besparen in PostgreSQL

  4. Een rij in een MYSQL-tabel vergrendelen tijdens een transactie