<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]转换为类型[@ org.springframework.web.bind.annotation.RequestParam @ org.springframework.format.annotation.DateTimeFormat java.util.Date]的 Value 'Wed Jun 08 00:00:00 WET 2016';嵌套异常是java.lang.IllegalArgumentException:Parse尝试失败的值[Wed Jun 08 00:00:00 WET 2016]
1 回答
您为html输入元素提供的模式无法按预期工作 . 您没有使用此设置日期格式,正如您从错误消息中看到的那样,spring尝试解析的日期是
不是你在html和控制器中设置的格式的任何日期(html模式不会修改发送的格式,它用于验证目的) .
我从来没有与之合作过,但你也应该这样做
只需删除完整的模式和格式,看看是否有效(我猜它可以)
根据我上面发布的日期格式(以及您的错误消息)在控制器模式中设置正确的日期格式 .
这里: