Подтвердить что ты не робот

Как передать два объекта для использования в форме с использованием тимелеафа?

Моя проблема заключается в следующем:

У меня есть два разных объекта, которые я должен заполнить из одной формы.

С 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"; 
    } 

Скажем, у меня есть другая панель объектов с переменной "status". Как я могу сделать, чтобы передать этот объект, чтобы я мог представить вход в той же форме?

Вроде:

<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>

До сих пор я пытался использовать fieldset с объектом th в нем, который не работает, я попытался поместить в форму два объекта:.

Единственный способ, которым я нашел, - это создать другой объект, содержащий эти два объекта, и передать его. Это хорошо работает, но я не могу создать такой объект, это абсурд (даже если он работает).

Конечно, объекты здесь не такие простые, как Foo и Bar, иначе я бы объединил эти два. Но это не то, что я могу сделать.

Можно ли даже передать два объекта, которые можно использовать в форме?

Спасибо.

4b9b3361

Ответ 1

Я не думаю, что вам нужно использовать два 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.