列表中每个对象的表格-ThymeLeaf

时间:2019-06-18 22:18:23

标签: java spring jsp thymeleaf

我正在尝试为列表模式中的每个对象创建一个包含带有该对象数据的表单的

所以我在我的控制器中:

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()}">正常工作。

那么这个问题有什么解决办法吗?

感谢您的帮助:)

1 个答案:

答案 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