您不需要仅使用Bean作为参数的
@ModelAttribute( parameter )
@RequestMapping("/a")void pathA(SomeBean someBean) { assertEquals("neil", someBean.getName());}GET /a?name=neil@RequestMapping(value="/a", method=RequestMethod.POST)void pathAPost(SomeBean someBean) { assertEquals("neil", someBean.getName());}POST /aname=neil
使用
@ModelAttribute( 方法 )将每个请求的 默认数据
加载到模型中,例如从数据库中加载,尤其是使用时
@SessionAttributes。这可以在
Controller或中完成
ControllerAdvice:
@Controller@RequestMapping("/foos")public class FooController { @ModelAttribute("foo") String getFoo() { return "bar"; // set modelMap["foo"] = "bar" on every request }}
由
FooController以下任何转发到的JSP :
${foo} //=bar
要么
@ControllerAdvicepublic class MyGlobalData { @ModelAttribute("foo") String getFoo() { return "bar"; // set modelMap["foo"] = "bar" on every request }}
任何JSP:
${foo} //=bar
如果要使用( 方法* )的结果作为 默认值, 请使用@ModelAttribute
( 参数 ):@ModelAttribute
* __
@ModelAttribute("attrib1")SomeBean getSomeBean() { return new SomeBean("neil"); // set modelMap["attrib1"] = SomeBean("neil") on every request}@RequestMapping("/a")void pathA(@ModelAttribute("attrib1") SomeBean someBean) { assertEquals("neil", someBean.getName());}GET /a
使用
@ModelAttribute( 参数 )获取存储在 flash属性中 的对象:
@RequestMapping("/a")String pathA(RedirectAttributes redirectAttributes) { redirectAttributes.addFlashAttribute("attrib1", new SomeBean("from flash")); return "redirect:/b";}@RequestMapping("/b")void pathB(@ModelAttribute("attrib1") SomeBean someBean) { assertEquals("from flash", someBean.getName());}GET /a
使用
@ModelAttribute( 参数 )获取存储的对象
@SessionAttributes
@Controller@SessionAttributes("attrib1")public class Controller1 { @RequestMapping("/a") void pathA(Model model) { model.addAttribute("attrib1", new SomeBean("neil")); //this ends up in session due to @SessionAttributes on controller } @RequestMapping("/b") void pathB(@ModelAttribute("attrib1") SomeBean someBean) { assertEquals("neil", someBean.getName()); }}GET /aGET /b
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)