博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.9、在方法上使用@ModelAttribute注解
阅读量:6880 次
发布时间:2019-06-26

本文共 1443 字,大约阅读时间需要 4 分钟。

  这一部分翻译自 Spring 5.0.0.M1 文档中的 一节。这一节的演示示例在的 mvc 分支中的 ModelAttrController.java 文件中。


  注解@ModelAttribute可以用在方法或者方法参数上。这一节解释它用在方法上,下一节解释把它用在方法参数上。

  用在方法上的@ModelAttribute指示那个方法的目的是添加一个或多个模型属性(model attributes)。这样的方法和@RequestMapping方法支持的参数类型相同,但是不能直接映射到请求。在控制器中的@ModelAttribute方法的调用时机是在同一个控制器中的@RequestMapping方法之前。下面是几个例子:

// 添加一个属性// 这个方法的返回值被添加到名为 “account” 的模型下// 你可以自定义这个名字,像这样 @ModelAttribute("myAccount")@ModelAttributepublic Account addAccount(@RequestParam String number) { return accountManager.findAccount(number); }// 添加多个属性@ModelAttributepublic void populateModel(@RequestParam String number, Model model) {    model.addAttribute(accountManager.findAccount(number));    // add more ...}

  @ModelAttribute方法用于构建带有常用属性的模型,比如用状态或者宠物类型填充一个下拉框,或者取回一个命令对象如 Account,把它用作 HTML 表单数据。后一种情况在下一节会进行更深入的讨论。

  注意,有两种形式的@ModelAttribute方法。第一种,方法通过返回属性来隐式地添加属性。第二种,方法接受一个Model参数,并把任何数量的属性添加给它。你可以根据需要选择其中的任何一种。

  一个控制器可以有任何数量的@ModelAttribute方法。所有的这些方法都在同一个控制器中的@RequestMapping方法之前调用。【很遗憾,我现在还没有找到关于一个控制器中有多个@ModelAttribute方法时,这些方法的调用顺序的说明。以后找到的话会补上】

  @ModelAttribute方法也可以定义在一个带有@ControllerAdvice注解的类中,这些方法应用于很多控制器。详情参见“使用@ControllerAdvice@RestControllerAdvice通知控制[2]”一节

  在不显式指定属性名的时候发生了什么?这种情况下,被赋值的模型属性的缺省名称是基于其类型的。比如,如果一个方法返回一个 Account 类型的对象的话,那么缺省名就是“account”。你可以通过注解@ModelAttribute的值来改变。如果直接添加属性到模型的话,请使用合适的方法 addAttribute(..) 的重载。

  注解@ModelAttribute也可以用在@RequestMapping方法上。这种情况下,@RequestMapping方法的返回值被拦截为一个模型属性,而不是一个视图名。关于视图,参见源文档的18.13.3节“”。

转载地址:http://higfl.baihongyu.com/

你可能感兴趣的文章
企业分布式微服务云SpringCloud SpringBoot mybatis (一)服务的注册与发现(Eureka)...
查看>>
批量下载图片
查看>>
Java内存模型(Memory Model)
查看>>
某大型网站迁移纪实(一)
查看>>
C#进行Socket 连接发送和接收数据
查看>>
C语言实现小游戏(一)
查看>>
即时编辑插件-jeditable|已迁移
查看>>
Linux下CA证书服务配置
查看>>
《JMeter从入门到精通》之一——开始你的第一个JMeter脚本
查看>>
从技术到管理,艰难的转型
查看>>
如何制作Windows 8系统U盘
查看>>
Linux之cgi实现系统主机监控
查看>>
tomcat session cluster
查看>>
最新RHEL7 安装体验
查看>>
我的友情链接
查看>>
[sig09]Rendering Technology at Black Rock Studio
查看>>
Python工具之SQLAlchemy
查看>>
传奇产品工程师Mike Lee谈远离“烂应用”
查看>>
Chrome 控制台新玩法-console显示图片以及为文字加样式
查看>>
WIN8.1中文版下用IE11打开OWA登陆页面总是英文
查看>>