【发布时间】:2018-08-16 13:53:24
【问题描述】:
给定一个看起来像这样的类:
public class Foo {
private List<Bar> bars = new ArrayList<>();
//getter and setter
}
使用空列表初始化,或者添加值然后附加到控制器中的弹簧模型,如下所示:
@RequestMapping(value = "add")
public String add(Model model) {
model.addAttribute("foo", new Foo());
return "foos/add";
}
当相同的模型属性被提交回另一个控制器方法时,如下所示:
@RequestMapping(value = "add", params = {"addBar"})
public String addBar(@ModelAttribute("foo") Foo foo) {
// Here foo.getBars() is always null....
// all other properties are correctly initialized
return "foos/add";
}
栏集合始终为空。除了始终为 null 的集合之外,其他所有属性都具有正确的值。
我验证了模型在渲染时有它的集合:
<div>
<p>DEBUG</p>
<pre data-th-text="${foo.bars}" />
</div>
当我创建一个空的Foo 实例或用一些Bars 预填充该实例时,它会打印[],我会看到类似于[Bar@1234] 的内容。
目前在 html 本身中 Bars 未绑定到任何地方,因此不会影响它们。
我做错了什么?提交是否只发送与th:field 绑定的值,而不是渲染模型属性中的所有内容?
【问题讨论】:
标签: spring spring-mvc thymeleaf