Java 如何使用thymeleaf将两个对象传递到表单中使用?

Java 如何使用thymeleaf将两个对象传递到表单中使用?,java,html,spring,thymeleaf,Java,Html,Spring,Thymeleaf,我的问题如下: 我有两个不同的对象,我必须从一个表单中填写 对于1对象,我只需在newFoo.html中执行以下操作: 去 在FooController中: @RequestMapping(value = "/foo/new", method = RequestMethod.GET) public String newFoo(final Foo foo, Model model) { return "newFoo"; } @Reque

我的问题如下:

我有两个不同的对象,我必须从一个表单中填写

对于1对象,我只需在newFoo.html中执行以下操作:

在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"; 
} 
假设我有另一个对象栏,其中有一个“status”变量。如何传递该对象,以便在同一表单中提交输入

比如:

到目前为止,我试着用一个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。

我使用div标记围绕第二个对象的表单输入,并添加了th:object。。。。。控制器对其进行处理并将其添加到数据库中

<form method=post th:object="${object1}" >
   <div th:object="${object2}" >

      code......

   </div> 
   <input type="submit" />
</form>

代码。。。。。。

我刚试过,但实际上不起作用。当我在提交后得到对象的所有变量时,它们都是空的。绑定结果对象为空,模型相同。无论如何,谢谢你。看来春天不够聪明。哦,是因为我们没有给它们起个名字。输入的
name
必须与bean字段名匹配。这是否意味着在Spring Thymeleaf项目中,通常不需要使用th:object?@MikeHT不一定<例如,如果有一堆
foo
字段,那么code>th:object在这里会很有用。用一个简单的
*{..}
把它们都写出来会使时间更短。因此,如果在表单本身上设置
th:object
,那么在表单的一个输入上仍然可以使用单独的
${object.attribute}