【发布时间】:2018-05-03 10:08:26
【问题描述】:
我是 Thymeleaf 的新手,尝试解决以下问题:
class Person() {
int id;
String name;
// getter & setter;
}
来自控制器类的片段:
@GetMapping(value = {"..."})
public ModelAndView getXXX(HttpServletRequest request)
{
ModelAndView mv = new ModelAndView("xxx");
...
List<Person> persons = ... // Let's say a list of Persons {1: "Peter", 2: Anna}
mv.addObject("persons", persons);
...
return mv;
}
现在,在模板 xxx.html 中,我尝试为每个人创建一个表单(而不是为所有人创建一个表单)。到目前为止我的方法:
<form th:each="p, stat : ${persons}"
th:object="${persons[stat.index]}"
th:action="..." method="POST" >
<input th:field="*{name}" type="text">
</form>
毫不奇怪:这行不通。如果我删除输入元素,则不会发生异常。使用输入元素,我收到以下消息(原因:java.lang.IllegalStateException):
Neither BindingResult nor plain target object for bean name 'persons[stat' available as request attribute
有没有办法只将对象列表添加到模型中,并且仍然能够为列表中的每个对象创建表单并将对应的对象绑定到每个表单?
谢谢。
【问题讨论】: