3

私の html は spring taglib を使用せずに構築されており、フォームのパラメーターをコントローラーのオブジェクトにバインドしたいと考えています。

現在、私のフォームは次のようになっています

<form>
<input type="text" name="frAccUserMgmt.userName"/>
<input type="password" name="frAccUserMgmt.userPwd"/>
</form>

私のオブジェクトの関連部分は

Class FrAccUserMgmt {
    private String userName;
    private Strint userPwd;
    // getter and setter
}

私のコントローラーは

@RequestMapping("login")
Public ModelAndView doLogin(FrAccUserMgmt frAccUserMgmt) {
    //code
}

バインドするにはどうすればよいですか。現在、バインディングは行われません。コードで空のオブジェクトを取得するだけです。

4

2 に答える 2

1

メソッドシグニチャにクラスを含めて、BindingResultバインディングエラーがあるかどうかを確認できます。

@RequestMapping("login")
Public ModelAndView doLogin(FrAccUserMgmt frAccUserMgmt, BindingResult result) {
    if (result.hasErrors()) {
        logger.warn("BindingResult errors: " + result.toString());
    }
    //code
}

frAccUserMgmtフォームフィールド名からパーツを削除します。Springは、コマンドオブジェクトで定義されたゲッターとセッターに基づいて、リクエストパラメーターをバインドするコマンドオブジェクトを自動的に検索します。

于 2012-07-23T03:40:09.753 に答える
0

これは、リクエストパラメーターを入力する必要があるパラメーター Bean の @ModelAttribute を追加することによっても実行できます。

春のドキュメントに従って

http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-method-args (16.3.3.8 メソッド引数で @ModelAttribute を使用する)

メソッド引数の @ModelAttribute は、引数をモデルから取得する必要があることを示します。モデルに存在しない場合は、引数を最初にインスタンス化してからモデルに追加する必要があります。モデルに存在する場合、引数のフィールドは、一致する名前を持つすべてのリクエスト パラメータから入力する必要があります。これは、Spring MVC ではデータ バインディングと呼ばれ、各フォーム フィールドを個別に解析する必要がなくなる非常に便利なメカニズムです。

于 2014-05-08T17:47:37.937 に答える