Как я могу получить дату ввода из формы в контроллере весной? - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь создать форму для пользователя, и у меня есть дата рождения типа 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 голосов
/ 14 января 2019

Большинство современных браузеров отправляют даты в формате ISO, поэтому это должно сработать:

@Entity
@Table(name = "users")
public class User implements Serializable {
   ...

   @DateTimeFormat(pattern = "yyyy-MM-dd")
   private Date birthday;
   ...
}

Используйте инструменты разработчика вашего браузера (например, вкладку "Сеть" Chrome) для проверки отправленных данных формы.

0 голосов
/ 13 января 2019

Вы определяете формат даты в день рождения в своем классе пользователя

т.е.

  // 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...