在 web mvc 中的请求处理程序方法中,我做了如下操作:
@RequestMapping(value = "/{day}", method = RequestMethod.GET)
@ResponseBody
public String dateValidation(
@PathVariable @DateTimeFormat(pattern = "dd-mm-yyyy") Date day) {
System.out.println("date is " + day);
return "date";
}
根据 spring 文档所述 here
它会自动将String转换为Date类型。
为什么我需要在 Controller 中添加 Initbinder
@InitBinder
public void initBinder(WebDataBinder binder) {
// Although spring says it is automatic
binder.addCustomFormatter(new DateFormatter("dd-mm-yyyy"));
}
我错过了什么吗?
谢谢
最佳答案
因为您正在自定义模式中传递日期,所以 Spring 不知道如何将其解析为正确的日期对象。这就是为什么您需要添加自定义格式化程序,Spring 将使用它来将您的模式转换为 Date
对象。
关于java - Spring自动类型转换不适用于字符串到日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623750/