SpringMVC が同じ名前のパラメータバインディングの問題を解決する方法

零到壹度
リリース: 2023-03-23 08:58:02
オリジナル
1275 人が閲覧しました

この記事では、SpringMVC が同名のパラメータバインディングの問題をどのように解決するかを主に紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして一緒に見てみましょう

例えば、私のフォームは次のようなものです:

<span style="font-size: 16px;"><form action="/test.action" method="post">  <br>    <input name="user.name">  <br>    <input name="acc.name">  <br>    <input type="submit">  <br></form> <br></span>
ログイン後にコピー

最初であれば、これはコントローラーで user オブジェクトと acc オブジェクトを宣言するだけで簡単に解決できます。 SpringMVC Binding のパラメーターは struts とは異なります。アクションが次のような場合、エラーが報告されます。

ここでは @InitBinder アノテーションが使用されています。詳細な説明については、関連情報を参照してください。ここではその使用方法についてのみ説明します。次の 2 つのメソッドを Controller クラスに追加します。これらは、指定された開始識別子の値を、指定された名前

<span style="font-size: 16px;">@RequestMapping("/test.action")<br>public void test(Account account, User user){<br>    System.out.println(user);<br>    System.out.println(account);<br>} <br></span>
ログイン後にコピー

のオブジェクトに代入するために使用され、アクション メソッドを次のように変更します。

<span style="font-size: 16px;">@InitBinder("account")  <br>public void initAccountBinder(WebDataBinder binder) {  <br>    binder.setFieldDefaultPrefix("acc.");  <br>} <br><br>@InitBinder("user")  <br>public void initUserBinder(WebDataBinder binder) {  <br>    binder.setFieldDefaultPrefix("user.");  <br>}<br></span>
ログイン後にコピー

@ModelAttribute のパラメータは上で定義した @InitBinder の値に対応している必要があり、そうでない場合は値が取得されないことに注意してください。 P 関連の推奨事項: rSpringmvc オブジェクト バインディング パラメーターの解決策「理由の 1 つ」

以上がSpringMVC が同じ名前のパラメータバインディングの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート