春天如何从控制器中的表单获取输入日期?

时间:2019-01-13 17:39:09

标签: java spring spring-data-jpa

我正在尝试为用户创建表单,并且输入的输入日期为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。

谢谢

2 个答案:

答案 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")