有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

列表中每个对象的java格式

我不熟悉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

有没有办法只向模型中添加对象列表,并且仍然能够为列表中的每个对象创建表单,并将共同响应的对象绑定到每个表单

谢谢


共 (1) 个答案

  1. # 1 楼答案

    你的控制器似乎有点不对劲

    看这里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)
    

    然后你应该能够迭代它

    编辑:我不知道怎么说英语