簡體   English   中英

無法將 java.lang.String 類型的值轉換為所需的 java.util.Date 類型

[英]Failed to convert value of type java.lang.String to required type java.util.Date

<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>

這是控制器代碼部分:

@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){

我收到這條消息:

出現意外錯誤(類型=錯誤請求,狀態=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:解析嘗試失敗的值 [Wed Jun 08 00:00:00 WET 2016]

您為 html 輸入元素提供的模式無法按您的預期工作。 您沒有為此設置日期格式,正如您從錯誤消息中看到的那樣,spring 嘗試解析的日期是

Wed Jun 08 00:00:00 WET 2016

不是您在 html 和控制器中設置的格式的任何日期(html 模式不會修改發送的格式,它用於驗證目的)。

我從來沒有用過,但你也應該

  • 只需刪除完整的模式和格式,看看是否有效(我想可以)
  • 根據我上面發布的日期格式(以及您的錯誤消息),在您的控制器模式中設置正確的日期格式。

這里:

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

您已使用注釋@DateTimeFormat(pattern = "yyyy-MM-dd") 在控制器類中正確設置了模式。 並且還請確保您已經: 在您的模型/實體類中導入了兩個必需的模式:

import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Temporal(TemporalType.DATE)
private Date date;

希望它起作用。因為它對我的起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM