<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){
我收到此消息:
出现意外错误(type = Bad Request,status = 400)。失败 将[java.lang.String]类型的值转换为所需类型 [java.util.Date];嵌套异常是 org.springframework.core.convert.ConversionFailedException:失败 从类型[java.lang.String]转换为type [@ 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:解析尝试失败的值 [2016年6月8日星期三00:00:00 WET 2016]
答案 0 :(得分:2)
您为html输入元素提供的模式并不像您期望的那样工作。您没有使用此设置日期格式,正如您从错误消息中看到的那样,春天尝试解析的日期是
Wed Jun 08 00:00:00 WET 2016
不是您在html和控制器中设置的格式的任何日期(html模式不会修改发送的格式,而是用于验证目的)。
我从未使用过,但你应该
下面:
@DateTimeFormat(pattern = "yyyy-MM-dd")
答案 1 :(得分:1)
您已经在Controller类中正确设置了带有注释@DateTimeFormat(pattern =“ yyyy-MM-dd”)的模式。并且请确保您具有: 在模型/实体类中导入了两个必需的模式,如下所示:
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Temporal(TemporalType.DATE)
private Date date;
希望它确实起作用。原因是它对我有用。