2016-09-20 5 views
0
<form th:action="@{home}" method="get"> 
    <div class="form-group"> 
     <label>from date:</label> <input type="date" pattern="yyyy-MM-dd" name="d1" th:value="${d1}" /> 
     <label>to date:</label> <input type="date" pattern="yyyy-MM-dd" name="d2" th:value="${d2}" /> 
     <button type="submit">Trouver</button> 
    </div> 
</form> 

dies der Teil-Controller-Code ist:fehlgeschlagen Wert vom Typ java.lang.String gewünschten Typ umwandeln java.util.Date

@RequestParam(name = "d1", defaultValue = "1900-01-01") @DateTimeFormat(pattern = "yyyy-MM-dd") Date d1, 
     @RequestParam(name = "d2", defaultValue = "2200-01-01") @DateTimeFormat(pattern = "yyyy-MM-dd") Date d2){ 

Im Diese Nachricht bekommen:

Es ist ein unerwarteter Fehler aufgetreten (type = Bad Request, status = 400). fehlgeschlagen, um den Wert vom Typ [java.lang.String] in den erforderlichen Typ zu konvertieren [java.util.Date]; verschachtelte Ausnahme ist org.springframework.core.convert.ConversionFailedException: Fehler beim vom Typ umwandeln [java.lang.String] eingeben [@ org.springframework.web.bind.annotation.RequestParam @ org.springframework.format .annotation.DateTimeFormat java.util.Date] für den Wert 'Wed Jun 08 00:00:00 WET 2016'; verschachtelte Ausnahme ist java.lang.IllegalArgumentException: Parse Versuch Wert [Mi 8. Juni 00.00.00 WET 2016]

gescheitert

Antwort

1

Das Muster, das Sie Ihre HTML-Eingabeelemente geben nicht wie erwartet . Sie sind nicht ein Format für Ihr Datum mit dieser Einstellung und wie Sie von Ihrer Fehlermeldung sehen, das Datum, dass der Frühling zu analysieren versucht, ist

Wed Jun 08 00:00:00 WET 2016 

nicht Datum im Format Sie in beide gesetzt haben Ihre html und in Ihrem Controller (das HTML-Muster ändert nicht das Format, das gesendet wird, es ist da für die Validierung).

Ich habe noch nie mit dem gearbeitet, aber Sie sollten entweder

  • entfernen Sie einfach das komplette Muster und Format und sehen, ob das funktioniert (ich denke, es könnte)
  • das gewünschte Datumsformat festgelegt in Ihrem Controller-Muster, gemäß dem oben angegebenen Datumsformat (und Ihrer Fehlermeldung).

hier:

@DateTimeFormat(pattern = "yyyy-MM-dd") 
+0

Das Muster ist nicht sein Problem. Wenn Sie die Fehlermeldung lesen, besagt es, dass es den Typ java.lang.String nicht in java.util.Date konvertieren kann. Dies erfordert stattdessen, dass das Datum in ein Datum geparst wird, indem SimpleDateFormat oder etwas Ähnliches verwendet wird. –

Verwandte Themen