2016-09-20 336 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或类似的东西将日期解析为日期。 –

相关问题