我正在尝试为列表模式中的每个对象创建一个包含带有该对象数据的表单的
。所以我在我的控制器中:
model.addAttribute("eventsInList", eventsInList);
以及在我的ThymeLeaf 模板中:
<div th:each="evnt,intr : ${eventsInList}">
<div class="modal fade" th:id="'modal-' + ${evnt.getId()}">
// some content
<form th:action="@{/updateEvent}" th:object="${evnt}" method="POST">
<input type="text" class="form-control pull-right datepicker"
th:value="${evnt.getDate()}"
th:field="*{date}">
</form>
</div>
</div>
当我运行这段代码时,它会抛出:
Bean名称'evnt'的BindingResult或普通目标对象都不能用作请求属性
所以我尝试了这个:
控制器:
model.addAttribute("eventsInList", eventsInList); // list of CalendarEvent
model.addAttribute("editEvent", new CalendarEvent());
ThymeLeaf 模板:
<div th:each="evnt,intr : ${eventsInList}">
<div class="modal fade" th:id="'modal-' + ${evnt.getId()}">
// some content
<form th:action="@{/updateEvent}" th:object="${editEvent}" method="POST">
<input type="text" class="form-control pull-right datepicker"
th:value="${evnt.getDate()}"
th:field="*{date}">
</form>
</div>
</div>
这种情况不会引发任何异常,但是th:value="${evnt.getDate()}"
是空
令我困惑的是,行<div class="modal fade" th:id="'modal-' + ${evnt.getId()}">
正常工作。
那么这个问题有什么解决办法吗?
感谢您的帮助:)
答案 0 :(得分:0)
几个小时后,我做到了!
这是我的解决方案(适用于我):
我的控制器:
model.addAttribute("eventsInList", eventsInList); // list of CalendarEvent
我的ThymeLeaf 模板:
<div th:each="evnt, intr : ${eventsInList.getEvents()}">
<div class="modal fade" th:id="'modal-' + ${evnt.getId()}">
// some content
<form th:action="@{/updateEvent}" th:object="${eventsInList[__${intr.index}__]}" method="POST">
<input type="text"
th:value="${eventsInList[__${intr.index}__].getDate()}"
th:name="|date|">
</form>
</div>
</div>
您可以看到我没有使用th:field=""
,这是因为在这种情况下th:field
不起作用,但是还有另一种解决方案将输入与{{ 1}},也就是说,您可以使用th:object
将输入值绑定到th:name
。
有关更多信息,您可以阅读this