我正在尝试为用户创建表单,并且输入的输入日期为date类型:
<input type="date" class="form-control" th:field="*{birthdate}">
我的用户实体具有类似以下内容:
@Entity
@Table(name = "users")
public class User implements Serializable {
...
@Column(nullable = true)
private Date birthdate;
...
}
在我的控制器中,我尝试通过这种方式获取输入:
@PostMapping("/admin/user/{userId}")
public String submitModUser(Model model, @Valid User user)
但是user.getBirthdate()始终为null。有人知道为什么吗?我怀疑该表单使用我的语言环境FR以字符串形式发送它,而我的控制器无法将其转换为java.util.Date。
谢谢
答案 0 :(得分:1)
大多数现代浏览器都以ISO格式发送日期,因此可以做到这一点:
@Entity
@Table(name = "users")
public class User implements Serializable {
...
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
...
}
使用您的浏览器开发人员工具(例如Chrome的“网络”标签)检查提交的表单数据。
答案 1 :(得分:0)
您已经在User类中定义了生日的日期格式
即
// Formats output date when this DTO is passed through JSON
@JsonFormat(pattern = "dd/MM/yyyy")
// Allows dd/MM/yyyy date to be passed into GET request in JSON
@DateTimeFormat(pattern = "dd/MM/yyyy")