2011-06-27 11 views
1

コントローラーメソッドとModelAttribute注釈付きメソッドとのやりとり方法を知りたい。モデルアノテートされたメソッドはどのように対話する必要がありますか?

たとえば、handlePageメソッドは、createListメソッドで作成されたリストをフィルタリングしますか? createAnObjectメソッドで作成されたオブジェクトのIDを設定しますか?

ModelAttribute注釈付きメソッドは、静的データをモデルに添付するように設計されていますか?

@ModelAttribute("someList") 
    public ArrayList<SomeList> createList() { 
    return new ArrayList<SomeList>(100); 
    } 
@ModelAttribute("anObject") 
    public AnObject createAnObject() { 
    return new MyObject(); 
    } 

    @RequestMapping(method=RequestMethod.GET) 
    public void handlePage(Model model) { 
    //Do some stuff to populate the model.... 
    } 

答えて

1

2人は実際にやりとりするべきではありません。この文脈において、@ModelAttributeは、参照データ、すなわち要求の詳細に依存しないデータの公開を意図している。

ハンドラメソッドがそのデータを変更する必要がある場合は、@ModelAttributeは適切ではありません。その代わりに、ハンドラメソッドはモデルを変更した後にモデルに明示的にデータを追加する必要があります。

+0

ありがとうございますSkaff、私の無知を申し訳ありません。注釈付きコントローラのモデルにデータを追加するにはどうすればよいですか? – user648026

+0

@ user648026: 'Model.add'を使用していますか? – skaffman

+0

いいえ、メソッドシグネチャを最初のパラメータとしてModelオブジェクトを受け入れるように変更する必要があります。 メソッドを呼び出すときに春がモデルを設定します(そして、もちろんmodel.addを使用します) ありがとうございました! – user648026

関連する問題