@ModelAttribute批注,何时使用?

@ModelAttribute批注,何时使用?,第1张

@ModelAttribute批注,何时使用?

您不需要仅使用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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5122881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存