1600 行の長さのコントローラーがあります。@ModelAttribute
これには、ほとんどの場合、注釈付きの一連のパブリック メソッドが取り込まれます。また、いくつかの@RequestMapping
方法があります。
行数を減らして、このクラスを分割したいと思います。@ModelAttribute
アノテーションを使用して複数のパブリック メソッドをどのように処理しますか? リクエストが処理されるたびに、それらはすべて呼び出されませんか?
1600 行の長さのコントローラーがあります。@ModelAttribute
これには、ほとんどの場合、注釈付きの一連のパブリック メソッドが取り込まれます。また、いくつかの@RequestMapping
方法があります。
行数を減らして、このクラスを分割したいと思います。@ModelAttribute
アノテーションを使用して複数のパブリック メソッドをどのように処理しますか? リクエストが処理されるたびに、それらはすべて呼び出されませんか?
1600行の長さのコントローラーがあります
ゴクゴク。
@ModelAttribute
アノテーションを使用して複数のパブリック メソッドをどのように処理しますか? リクエストが処理されるたびに、それらはすべて呼び出されませんか?
メソッドにアノテーションを付けるために使用される場合、このアノテーションは、実行される@RequestMapping
メソッドに関係なく、そのコントローラー クラスによって実行されるすべてのリクエストに対して、メソッドの戻り値を使用してモデルを設定する必要があることを示します。
私の提案は、監査を実行して、どのビュー (JSP など) がさまざまな@ModelAttribute
メソッドによって提供されるどのモデル データを使用しているかを確認することです。各ビューは、そのデータのサブセットのみを使用する可能性があります。
@ModelAttribute
とメソッドのどの組み合わせがうまくいくかを理解したら@RequestMapping
、それらを個々のクラスに分割します。
それがうまくいかない場合 (すべてのビューが実際にすべてのデータを使用している可能性があります)、@ModelAttribute
クラスからメソッドを完全に抽出し、それらの出力を手動で結合する単一のメソッドを使用してそれらをつなぎ合わせることを検討してください (たとえば、Model
またはメソッドからこの新しいメソッドにModelMap
オブジェクトを追加し、モデルのビットをそのオブジェクトに追加します。@RequestMapping
@ModelAttribute
注釈付きのメソッドは、追加のモデル データを追加するための便利な方法にすぎないことを忘れないでください。それらが唯一の方法ではありません。
@ModelAttribute メソッドは void を返すこともできます。
@ModelAttribute
public void populateModel(Model model) {
model.addAttribute("key", "value");
// keep adding any number of attributes...
}
複数の をグループ化することはできません@ModelAttribute
か? たとえば、3 つの異なる選択ボックスの値を取得するための 3 つのメソッドがそれぞれ 1 つある場合、それらすべてを 1 つのメソッドに入れることができます。