sql >> Databasteknik >  >> RDS >> Mysql

Begäran som skickades av klienten var syntaktisk felaktig med @DateTimeFormat

Eftersom du använder RequestBody med en application/json innehållstyp kommer Spring att använda sin MappingJackson2HttpMessageConverter för att konvertera din JSON till ett objekt av din typ. Men datumsträngen du anger, 11/14 matchar inte något av de förkonfigurerade datummönstren och kan därför inte analysera det korrekt. MappingJackson2HttpMessageConverter , eller mer specifikt ObjectMapper som gör jobbet, vet ingenting om @DateTimeFormat , en vårkommentar.

Du måste berätta för Jackson vilket datummönster du vill använda. Du kan göra det med en anpassad datumdeserializer

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

Anteckna sedan helt enkelt ditt fält så att Jackson vet hur man deserialiserar det.

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

Du kan använda @DateTimeFormat om du använde url-kodade formulärparametrar med @ModelAttribute . Spring registrerar några omvandlare som kan konvertera ett strängvärde från en begärandeparametrar till ett Date objekt. Detta beskrivs i deokumentering.




  1. Lägg till Min SQL-datakälla i Visual Studio express 2013

  2. Väljer poster i ordning efter överordnat id

  3. mysql_connect():Ingen sådan fil eller katalog

  4. När indexerar Oracle kolumnvärden null?