2016-09-20 337 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){ 

即時得到這樣的信息:

出現意外錯誤(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';嵌套的例外是 java.lang.IllegalArgumentException異常:解析嘗試失敗值 [星期三6月8日0點00分零零秒WET 2016年]

回答

1

你給你的HTML輸入元素的模式不起作用像您期望。您還沒有設置您的日期這樣的格式,你可以從你的錯誤信息看,春天正試圖解析日期是

Wed Jun 08 00:00:00 WET 2016 

不在格式的任何日期你在同時設置你的HTML和你的控制器(HTML模式不會修改發送的格式,它在那裏用於驗證目的)。

我從來沒有與工作,但您應該

  • 只是刪除了完整的模式和格式,並看看是否能工程(我想這可能)
  • 設置正確的日期格式的控制器模式,根據我上面發佈的日期格式(和你的錯誤信息)。

這裏:

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

模式是不是他的問題。如果您閱讀錯誤消息,則表明它不能將java.lang.String類型轉換爲java.util.Date。這將需要使用SimpleDateFormat或類似的東西將日期解析爲日期。 –

相關問題