2016-09-20 2 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> 

必要なタイプにjava.lang.String型の値を変換できませんでした:これは、コントローラコード部である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がこのメッセージを取得します予期しないエラーがありました(type = Bad Request、status = 400)。 [java.lang.String]型の値を必須型に変換できませんでした [java.util.Date];ネストされた例外は org.springframework.core.convert.ConversionFailedExceptionです:タイプ[java.lang.Stringで] を入力するから の変換に失敗しました[@ org.springframework.web.bind.annotation.RequestParam @ org.springframework.format .annotation.DateTimeFormat java.util.Date] 値 'Wed Jun 08 00:00:00 WET 2016';あなたが期待するよう、あなたのHTML入力要素に与えるパターンが動作しない試みが値 に失敗しましたパース[水曜日6月8日0時00分00秒2016 WET]

答えて

1

:ネストされた例外は java.lang.IllegalArgumentExceptionがあります。あなたはこれであなたの日付の書式を設定すると、あなたはエラーメッセージから見ることができるように、春が解析しようとしている日付は

Wed Jun 08 00:00:00 WET 2016 

ないあなたは両方のあなたに設定されている形式で任意の日付ですされていませんhtmlとあなたのコントローラーで(htmlパターンは、送られるフォーマットを変更しません、それは妥当性確認の目的のためにそこにあります)。

私はそれで働いたことがありませんが、あなたは

  • だけの完全なパターンやフォーマットを削除し、それが動作するかどうかを確認しなければならないのいずれか(私はそれができたと思います)
  • は、あなたの中に、正しい日付形式を設定します上記の(そしてあなたのエラーメッセージ)日付の書式に従って、コントローラパターンを作成します。
  • ここ

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

パターンは彼の問題ではありません。エラーメッセージを読むと、java.lang.String型をjava.util.Dateに変換できないことが示されます。代わりに、SimpleDateFormatなどを使用して日付を解析する必要があります。 –

関連する問題