繁体   English   中英

Thymeleaf-列表中每个对象的形式

[英]Thymeleaf - Form for each object in list

我是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中,我尝试为每个人创建一个表单(而不是为所有人创建1个表单)。 到目前为止,我的方法:

<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

有没有一种方法只能将对象列表添加到模型,并且仍然能够为列表的每个对象创建表单并将核心响应对象绑定到每种表单?

谢谢。

您的控制器似乎有问题。

看到这里https://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

所以

@RequestMapping(value = "message", method = RequestMethod.GET)
    public String messages(Model model) {
        model.addAttribute("messages", messageRepository.findAll());
        return "message/list";
    }

您只需将所需的对象(或列表)传递给模型对象

model.addAttribute("attributeename", attributeobject)

那么您应该可以对其进行迭代。

编辑:我不知道英语...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM