前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springmvc 在方法上使用 @ModelAttribute 注解

springmvc 在方法上使用 @ModelAttribute 注解

作者头像
明明如月学长
发布2021-08-27 11:37:59
7830
发布2021-08-27 11:37:59
举报
文章被收录于专栏:明明如月的技术专栏

在方法上使用 @ModelAttribute 注解

@ModelAttribute注解不仅可以用在方法上也可以用在方法参数上。本节讲述@ModelAttribute在方法上的使用,下一节将讲述其在方法参数上的使用。

在方法上使用 @ModelAttribute 注解的目的是添加一个或者多个model属性中。这些方法支持@RequestMapping方法对应的参数,但是不能直接和请求映射。 在同一个Controller中@ModelAttribute 注解的方法将先于@RequestMapping注解的方法被调用。请看下面的例子:

代码语言:javascript
复制
// 添加一个属性

// 方法的返回值以”account”作为键添加到了model中

// 你可以通过 @ModelAttribute("myAccount")来指定名称

 

@ModelAttribute

public Account addAccount(@RequestParam String number) {

return accountManager.findAccount(number);

}

 

// 添加多个属性

 

@ModelAttribute

public void populateModel(@RequestParam String number, Model model) {

model.addAttribute(accountManager.findAccount(number));

// add more ...

}

@ModelAttribute 方法用来将一般属性填充到model 中,如用状态或者宠物类型填充下拉列表,或者用来恢复一个如Account命令对象用来表示html表单中的数据。后一种情况在下一节中将作详细阐述。

请注意两种@ModelAttribute方法风格,第一种:通过返回对象添加属性。第二种:方法含有Model作为参数,通过Model来添加任何数量的属性。你可以根据需要去选择。

一个controller(控制器)可以含有任意数量的 @ModelAttribute方法。同一个controller中所有这些方法在将先于 @RequestMapping 方法调用。

@ModelAttribute 也可以定义在被@ControllerAdvice注解的类中,这些方法将被应用到很多controller中。想了解更多相关信息请看:“Advising controllers with the@ControllerAdvice  “这一节。

提示:

  如果一个model attribute(模型属性)名没有被明确指定会怎样?

在这种情况下,将高根据模型属性的类型来分配默认的名称。例如,如果方法返回一个Account类型的对象,默认模型属性名是"account". 你可以通过修改 @ModelAttribute 注解的value来修改模型属性的名称。如果想把属性直接添加到Model中.你可以使用适当的addAttribute(..) 重载方法。也就是说,带不带属性名都可以。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/07/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档