0

モデルにオブジェクトを追加するコントローラ クラスがあります。ビュー上でアクセスできます。このオブジェクトを新しいコントローラ メソッドに送り返したいのですが、フォームを使用せずにそれを行うことは可能ですか? サンプルコードは次のとおりです。

ここでは、モデルに「詳細」を追加しています。

@RequestMapping(...)
public ModelAndView method1() {
       .....
        mv.addObject("details", details);
         mv.setViewName(REVIEW_PAGE);
         return mv;
}

詳細がレビューされるレビューページに「OK」ボタンがあります。ここで、この「詳細」オブジェクトを送信用の新しいメソッドに送り返したいと思います。同じコントローラ クラスのこの 2 番目のメソッドで詳細オブジェクトにアクセスしたいと考えています。

これをモデル属性として追加しようとしましたが (次のコードでわかるように)、詳細オブジェクト内で null 値を取得しています。

@RequestMapping(....)
public ModelAndView method2(@ModelAttribute("details") Details details){
//access details object here        

}

フローは次のようになります: (モデルに詳細を追加する (方法 1) --> レビューのためにビューに送信する --> 確認する ([OK] をクリックする) --> 提出のために返送する (方法 2))

私はSpring MVCを初めて使用するので、質問に誤りがある場合は申し訳ありません.

4

1 に答える 1

2

@SessionAttributesコントローラーのアノテーションを使用して、Spring にモデルのコピーをサーバー側に保持するように指示できます。

@Controller
@SessionAttributes("details")
public class TheController {
}

これにはいくつかの注意事項があります。デフォルトの組み込み実装は非常に基本的なものであり、たとえば、タブ間で同じセッションを使用するマルチタブ ブラウザーを考慮していません。また、自動クリーンアップもありません。データの処理が完了したら、手動で呼び出すsession.setComplete()必要があります。

于 2013-01-25T06:53:35.323 に答える