20

私の問題は次のとおりです。

1 つのフォームから入力する必要がある 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 を含むフィールドセットを実行しようとしましたが、機能しません。フォームに 2 つの th:object を入れようとしましたが、これも機能しません。

私が見つけた唯一の方法は、これら 2 つのオブジェクトを含む別のオブジェクトを作成し、それを渡すことです。それはうまく機能しますが、そのようなオブジェクトを作成することはできません。それはナンセンスです (機能したとしても)。

もちろん、ここでのオブジェクトは Foo や Bar ほど単純ではありません。しかし、それは私にできることではありません。

そのような 2 つのオブジェクトを渡してフォームで使用することは可能ですか?

もうありがとう。

4

2 に答える 2

31

two を使用する必要はないと思います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 にマッピングするのに十分スマートであると思います。

于 2013-04-20T16:56:04.880 に答える