如何使用百里香叶传递两个对象以在表单中使用?
问题内容:
我的问题如下:
我有2个不同的对象,必须从一个表单中填写。
对于1个对象,我只需在newFoo.html中执行:
<form th:object="${foo} th:action="@{/foo}" method="post">
<input type="text" th:field="*{name}"/>
<button type="submit">Go</button>
</form>
并在FooController中:
@RequestMapping(value = "/foo/new", method = RequestMethod.GET)
public String newFoo(final Foo foo, Model model) {
return "newFoo";
}
@RequestMapping(value = "/foo/new", method = RequestMethod.POST)
public String saveFoo(final Foo foo, final BindingResult bindingResult, Model model) {
fooService.save(foo);
return "redirect:/foo/new";
}
假设我有另一个对象栏,其中带有“状态”变量。我该如何传递该对象,以便可以在同一表格中提交输入?
喜欢:
<form th:object="${foo} && ${bar}" th:action="@{/foo}" method="post">
<input type="text" th:field="*{name}"/>
<input type="text" th:field="*{status}"/>
<button type="submit">Go</button>
</form>
到目前为止,我试图对其中带有th:object的字段进行设置,这是行不通的,我试图将两个th:object放入形式,这也不起作用。
我发现的唯一方法是构建包含这两个对象的另一个对象,并将其传递。那很好,但是我不能创建这种对象,这是胡说八道(即使它可以工作)。
当然,这里的对象并不像Foo和Bar那样简单,否则我将合并这两个对象。但这不是我能做的。
甚至可以像这样传递两个对象以形式使用?
谢谢了
问题答案:
我认为您不需要使用两个th:objects
。只需使用th:value
<form th:action="@{/foo}" method="post">
<input type="text" th:value="${foo.name}" name="name"/>
<input type="text" th:value="${bar.status}" name="status"/>
<button type="submit">Go</button>
</form>
我认为Spring在控制器方面足够聪明,可以使用其映射技术将字段映射到适当的命令对象foo或bar。