Я хочу отправить объект в представление для представления и отправить его обратно в контроллер, используя 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>
Проблема становится все более странной, я думаю: (