Как мне заполнить поле тип ввода = «время» в Thymeleaf?

#java #spring-boot #thymeleaf

#java #весенняя загрузка #thymeleaf

Вопрос:

Проект Spring-Boot Thymeleaf не заполняет поле тип ввода = «время» при открытии HTML-формы. Вот как это работает:

 <input type="time" class="form-control" id="inputTime" th:value=${CarEntity.timeOperation} required>
 

И вот оно:

 <input type="time" class="form-control" id="inputTime" th:field="*{timeOperation}" required>
 

Или так:

 <input type="time" class="form-control" id="inputTime" th:field="*{timeOperation}" th:value=${CarEntity.timeOperation} required>
 

Поле остается пустым.
И если я использую <тип ввода = «текст>, тогда все работает нормально.

 <form id="f-pr-03" th:method="POST" th:action="@{/edit/{id}(id=${carEntity.getId()})}" th:object="${carEntity}">
That's how everything works and displays and reads.
    <label for="inputName">Input name</label>
    <input type="text" class="form-control" id="inputName" th:field="*{name}" required>

But this is not displayed
    <label for="inputPTTime">Input time</label>
    <input type="time" class="form-control" id="inputPTTime" th:field="*{timeOperation}" max="17:50" min="00:01" required>

And this is how it is displayed, but not transmitted by the POST method 
    <label for="inputPTTime">Input time</label>
    <input type="time" class="form-control" id="inputPTTime" th:value=${CarEntity.timeOperation} max="17:50" min="00:01" required>
    <button type="submit" name="action">Save</button>
</form> 

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

1. Просто для пояснения: ваш первый пример использования th:value=${CarEntity.timeOperation} должен работать правильно, если timeOperation возвращает строку, такую как 13:30 . Смотрите документацию здесь . Правильно ли работает ваш первый пример?

2. Или, если вы также хотите отобразить секунды, строка может быть примерно такой: 13:30:45 . (Опять же, просто для пояснения.)

3. Первый пример работает правильно. но мне нужно, чтобы значение не только считывалось из переменной, но и записывалось в переменную timeoperation.

4. Есть ли у вас <form> th:object атрибут with для этого ввода?

5. Первый вариант записывает только время в поле ввода. но когда я использую метод post, из этого поля ничего не считывается (null). И во второй версии оно считывается из него, но не записывается. Как мне заставить работать и чтение, и запись?

Ответ №1:

Я не знаю, если это все еще актуально, так как прошло какое-то время. Thymeleaf предоставляет специальный атрибут th:field, отвечающий за привязку полей ввода к свойству в классе bean. Этот атрибут ведет себя по-разному в зависимости от того, подключен ли он к. Thymeleaf поддерживает все новые типы ввода, представленные в HTML5, такие как type=»color» или type =»datetime».

Пожалуйста, проверьте это для получения дополнительной информации:

https://frontbackend.com/thymeleaf/working-with-forms-in-thymeleaf