我对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 。
我错了吗?也许我不清楚模特行为......
答案 0 :(得分:6)
你的期望是错误的。将某些内容放入模型中使其仅适用于当前请求。在模型中添加内容的目的是使其可用于视图,以生成HTML页面。
答案 1 :(得分:1)
使用每个请求初始化Model,每个请求都会创建一个新的模型对象。添加任务对象的模型与getFile方法中的模型对象不同。
如果这些是2个不同的请求,您可能希望将任务对象放入会话并从那里检索它。