web-dev-qa-db-ja.com

:objectの値をhtmlからコントローラーに渡す方法

Thymeleaf(th:object)の値をコントローラーに渡す方法。

HTML:

_<form id="searchPersonForm" action="#" th:object="${person}" method="post" >  
</form>
_

SearchPersonController:

_@RequestMapping(value = "/modify/{pid}", method = RequestMethod.GET)
    public String modifyPersonData(Principal principal, @ModelAttribute("person") Person person, UserRoles userRoles, Model model, @PathVariable("pid") Long pid ) {
         //modify data
    }
_

私は@ModelAttribute("person") Person personのように渡そうとしていますが、これは前のページからフォームの値を取得していません。

誰でもこれを手伝ってくれる?.

ありがとう。

10
Java_User

できれば、actionの代わりにth:actionをフォーム属性として使用し、次のようにバインディングを指定します。

<form th:action="@{/the-action-url}" method="post"
    th:object="${myEntity}">

    <div class="modal-body">
        <div class="form-group">
            <label for="name">Name</label> <input type="text"
                class="form-control" id="name" th:field="*{name}"> </input>
        </div>

        <div class="form-group">
            <label for="description">Description</label> <input type="text"
                class="form-control" id="description"
                th:field="*{description}"> </input>
        </div>
    </div>
</form>

モデルの属性(フォームのmyEntityオブジェクト)を初期化するSpringコントローラーを使用して、このフォームをバックアップします。これはコントローラクラスの関連部分です:

@ModelAttribute(value = "myEntity")
public Entity newEntity()
{
    return new Entity();
}

@ModelAttributeアノテーションは、リクエストごとにSpringによってモデルオブジェクトが確実に初期化されるようにします。

コントローラへの最初のgetリクエスト中に、「command」という名前のモデルを設定します。

@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView getRanks(Model model, HttpServletRequest request)
{
    String view = "the-view-name";
    return new ModelAndView(view, "command", model);
}

また、フォーム送信後に結果としてモデルにアクセスするには、相対メソッドを実装します。

@RequestMapping(value = "/the-action-url", method = RequestMethod.POST)
public View action(Model model, @ModelAttribute("myEntity") Entity myEntity)
{
    // save the entity or do whatever you need

    return new RedirectView("/user/ranks");
}

ここでは、@ModelAttributeの注釈が付けられたパラメーターが、送信されたオブジェクトに自動的にバインドされます。

9
Evil Toad