@SessionAttribute:何时初始化模型?
问题内容:
当我想在Spring 3的Session作用域中建立模型时,可以使用foll。控制器中的注释:-
@SessionAttribute("myModel");
但是,这只是myModel的声明。在什么时候初始化它,以便在View中使用它。Spring将如何知道该模型的类类型?
有人可以举例说明吗?
问题答案:
@SessionAttribute
工作方式如下:
-
@SessionAttribute
当您将相应的属性放入模型时(明确地或使用@ModelAttribute
-annotated方法)初始化。 -
@SessionAttribute
当调用带有签名中相应模型属性的控制器方法时,HTTP参数中的数据会更新。 -
@SessionAttribute
当你调用s的清除setComplete()
上SessionStatus
传递到控制器方法作为参数对象。
例:
@SessionAttribute("myModel")
@Controller
public class MyController {
@RequestMapping(...)
public String displayForm(@RequestParam("id") long id, ModelMap model) {
MyModel m = findById(id);
model.put("myModel", m); // Initialized
return ...;
}
@RequestMapping(...)
public String submitForm(@ModelAttribute("myModel") @Valid MyModel m,
BindingResult errors, SessionStatus status) {
if (errors.hasErrors()) {
// Will render a view with updated MyModel
return ...;
} else {
status.setComplete(); // MyModel is removed from the session
save(m);
return ...;
}
}
}