проверка дат с использованием html5 и thymeleaf

#java #html #date #thymeleaf

#java #HTML #Дата #thymeleaf

Вопрос:

У меня есть форма, которая принимает ввод даты. Я хочу проверить, что пользователь не выбирает будущую дату. Я знаю, что есть min и max, которые я могу поместить в html, но единственные примеры, которые я видел, дата жестко запрограммирована, поэтому я попытался использовать передачу значения currentDate в html, добавив его в модель

 model.addAttribute("currentDate", LocalDate.now());



<input type="date" max="${currentDate}" data-th-max="${currentDate}" id="yearOfRegistration" name="yearOfRegistration"/>
                    <label class="error" th:errors="${initialRequestDTO.yearOfRegistration}"></label>
  

Я делаю, однако форма принимает будущие даты, а не так, как я предполагал. Есть предложения?

Ответ №1:

Вы можете сделать это с помощью Javascript, получив текущую дату в правильном формате и используя ее для установки max значения введенной даты. Что-то вроде этого:

 
$(function() {
  var currentDate = new Date();
  var month = currentDate.getMonth()   1;
  var day = currentDate.getDate();
  var year = currentDate.getFullYear();

  if (month < 10) {
    month = '0'   month.toString();
  }

  if (day < 10) {
    day = '0'   day.toString();
  }

  var maxDate = year   '-'   month   '-'   day;
  $('#yearOfRegistration').attr('max', maxDate);
});

  

Комментарии:

1. спасибо, это отлично работает. У вас все еще есть ответ на вопрос, почему я не могу использовать дату, которую я получаю в своем Java-коде?

2. @kalina199 Может быть связано с тем, что ваш currentDate атрибут модели имеет тип LocalDate . Попробуйте преобразовать его в строку и вместо этого сохранить строку в модели.