3

Spring MVC でのモデルの動作に疑問があります。

ハンドラーメソッドを備えたコントローラークラスがあります。たとえば、次のようにします。

@RequestMapping(value = "/result", method = RequestMethod.GET)
public String getExportResults(@RequestParam("token") String token,
        Model model) {

        // ...

        model.addAttribute("task", myObject);

        // ...
}

@RequestMapping(value = "/file", method = RequestMethod.GET)
public void getFile(Model model, HttpServletResponse response)

    // can't find "task" attribute...

}

"task"属性をmodelに入れると、メソッドgetExportResultsのモデル引数にあると予想されますgetFileが、取得しようとする"task"nullになります。私が間違っている?たぶん、モデルの動作は私には明らかではありません...

4

2 に答える 2

5

あなたの期待は間違っています。モデルに何かを入れると、現在のリクエストでのみ使用できるようになります。モデルに何かを追加する目的は、HTML ページを生成するためにビューで使用できるようにすることです。

于 2012-07-03T11:02:01.287 に答える
1

モデルはリクエストごとに初期化され、リクエストごとに新しいモデル オブジェクトが作成されます。タスク オブジェクトを追加するモデルは、getFile メソッドで取得するモデル オブジェクトと同じではありません。

これらが 2 つの異なる要求である場合は、タスク オブジェクトをセッションに入れて、そこから取得することをお勧めします。

于 2012-07-03T11:00:25.647 に答える