Thymeleaf th: поле не привязывает значение для входного текста - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу отправить объект в представление для представления и отправить его обратно в контроллер, используя springboot и Thymeleaf, однако я столкнулся со странной проблемой с Thy: value Thymeleaf.

Это мой контроллер:

@GetMapping("/food/buy/{fid}")
public String buyFood(HttpServletRequest request, @PathVariable("fid") Long fid, Model model) {
    Food food = consumerService.getFood(fid);
    System.out.println("foodid = " + food.getId());
    model.addAttribute("food", food);
    model.addAttribute("order", new OrderVO());
    return "user/direct/f_order";
}

и мой взгляд:

<form th:action="@{/user/buy/direct/food}" method="post" th:object="${order}">
    <table border="1px">
        <tr th:hidden="true">
            <td><input type="text" th:value="${food.id}" th:field="*{fid}" th:readonly="true"></td>
        </tr>
    </table>
</form>

и класс VO:

public class OrderVO {
    private Long fid, address;

    private Integer amount;

    @DateTimeFormat(pattern = "HH:mm")
    private Date deliverTime;
}

проблема, значение поля ввода равно нулю, но я уверен, что идентификатор продукта не равен нулю (я печатаю его в контроллере)

Я удаляю блок th: field, и food.id может быть правильнопредставил.Если я добавлю блок th: field обратно, проблема снова возникнет.

Так что может быть что-то не так с th: field, но я не могу понять.Может кто-нибудь указать на мою ошибку?

================================== ОБНОВЛЕНИЕ ============================

Некоторые друзья любезно указывают, что th: field может перезаписывать th: value, но я также использую их в других представлениях, и этоработает отлично:

<tr>
    <td>UserName</td>
    <td><input type="text" th:value="*{userName}" th:field="*{userName}"></td>
</tr>

Проблема становится все более странной, я думаю: (

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

В табличной форме попробуйте использовать th:name вместо th:field, чтобы преодолеть проблему связывания

th:name="|order.fid|"

и придерживаться соглашения об именах Java.

0 голосов
/ 22 февраля 2019

Замените * {fid} на fid. У моей команды была такая же проблема, и она работала

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...