`
yjflfliulei
  • 浏览: 78563 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring MVC 3.1 注解:@modelAttibute

阅读更多

 @ModelAttribute: 两种用法:1.方法上; 2.参数上

  使用 @ModelAttribute应明确:使用该注解的方法会在其所在的controller其它的映射方法执行前执行

 

用法一:

方法上(1):

 

@ModelAttribute("user")

	public User testModelAttribute(){
		return getBaseService().get(User.class, 1L);
		
	}

        相当于

 

request.setAttibute("user",.......)

 

  如果使用过struts的话应该对preparable接口有所了解,个人觉得,@ModelAttribute这样情况下用于方法上的话和实现struts的pre...接口,重写其prepared方法效果相同

 

方法上(2):

 

@ModelAttribute
public void populateModel(@RequestParam String number, Model model) {
    model.addAttribute(accountManager.findAccount(number));
    // add more ...
}

 这种方法旨在增加model属性,具体不累赘了,官方文档说的很清楚,

 

 

方法上(3):

 

@RequestMapping(value="/index",method=RequestMethod.GET)
	@ModelAttribute("user")
	public User testModelAttribute( Long id){
		return getBaseService().get(User.class, 1L);
		
	}

 可以和@RequestMapping一起使用,但是这种情况下使用@ RequestMapping方法的返回值被解释为一个模型属性,而不是一个视图名称,转发视图名称为URL映射地址,和void方法相同

 

用法二:

参数上(1):

 

@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Pet pet) {
   
}

 使用在参数上的情况下,springMVC会去判断目前是否存在参数实例,若存在,则将对应属性按名称复制到pet中,弱不存在,则先实例化参数pet对象,然后复制属性值,那么方法参数中的pet如何传入呢?

1.已使用@sessionAttribute存入过该属性

2.根据URI模板,或者类型转化器搜索到的

3.使用pet默认构造方法实例化的

@sessionAttribute是常见从数据库中检索属性的方法,可以使用 @SessionAttributes 注解将数据传递于请求之间

 

 

@RequestMapping(value="/accounts/{account}", method = RequestMethod.PUT)
public String save(@ModelAttribute("account") Account account) {

}

 上面的列子中会利用uri中的account来实例化save方法中account对象,当然,如果有注册自己的类型转化器的话不用@ModelAttribute("account")也是可以实例化account对象的

 

官方文档关于@ModelAttribute也介绍了和验证一块使用,

 

@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@Valid @ModelAttribute("pet") Pet pet, BindingResult result) {

    if (result.hasErrors()) {
        return "petForm";
    }
    
    // ...
}

 以上使用jsr303来做验证的,使用该验证的话恤导入jsr303的jar和实现jsr303的验证jar(比如hibernate-validation.jar,可能单词拼写错了..),使用蛮简单的,就不说了,有兴趣可以搜下这方面的资料,官方文档也有的。

 

@sessionAttribute 见另一篇博客.

分享到:
评论

相关推荐

    spring MVC 3.1 spring security 注解实现安全机制

    spring MVC 3.1+spring security3.1+mybaits+ 注解 实现安全机制。jar包没有上传。自己补充

    Spring mvc全注解框架

    此框架结合了springmvc,hibernate,mybatis3.1,log4j2. 其中mybatis和hibernate只要在spring的配置文件注释一下就可以选择其中一个了。 事务处理,日志设置。所有东西都设置好了。完全满足中小项目直接开发

    spring mvc3.2.7+servlet3.1(jetty)+maven3+eclipse

    spring mvc3.2.7(基于注解配置)+servlet3.1(jetty)+maven3+eclipse

    Spring_MVC_051:Spring MVC 学习总结(五)——校验与文件上传

    Spring MVC 学习总结(五)——校验与文件上传 目录 2.2.7、范围 2.2.8、其它注解 2.3、注解控制器参数 1.4、在UI中添加错误标签 1.5、测试运行 三、使用jQuery扩展插件Validate实现前端校验 3.1、jQuery扩展插件...

    spring杂谈 作者zhang KaiTao

    1. spring杂谈[原创] 1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 ...1.32 Spring3 Web MVC下的数据类型转换(第一篇)——《跟我学Spring3 Web MVC》抢先看 1.33 Spring 注入集合类型

    spring.doc

    3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 Spring容器内部对象创建拓展: 12 3.3.1使用类构造器实例化(默认无参数) 14 3.3.2使用静态工厂方法实例化(简单工厂模式) 14 3.3.3...

    跟我学SpringMVC 教程

    第六章 注解式控制器详解 Spring MVC 3.1新特性 生产者、消费者请求限定 第六章 注解式控制器详解 SpringMVC强大的数据绑定(1) 第六章 注解式控制器详解 SpringMVC强大的数据绑定(2) 第七章 注解式控制器的...

    跟我学SpringMVC

    第六章 注解式控制器详解 Spring MVC 3.1新特性 生产者、消费者请求限定 第六章 注解式控制器详解 SpringMVC强大的数据绑定(1) 第六章 注解式控制器详解 SpringMVC强大的数据绑定(2) 第七章 注解式控制器的数据...

    SpringMVC教程

    也包含新版Spring3.0,3.1 基于注解的MVC配置方法 总之绝对值得下载 学习 并以后查阅 目录 第一章 Web MVC简介.pdf 第二章 Spring MVC入门 .pdf 第三章 DispatcherServlet详解.pdf 第四章 Controller接口控制器详解...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言支持 2.6.2. JMX 2.6 .3. 任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 ...

    spring3.1中文参考文档

    spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................

    SpringMVC+Hibernate全注解整合

    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 mvc:annotation-driven --> <mvc:annotation-driven/> <!...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 Spring MVC 基本配置 87 4.4.1 静态资源映射 88 4.4.2 拦截器配置 89 4.4.3 @ControllerAdvice 91 4.4.4 其他配置 94 4.5 Spring MVC 的高级配置 98 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 Spring MVC 基本配置 87 4.4.1 静态资源映射 88 4.4.2 拦截器配置 89 4.4.3 @ControllerAdvice 91 4.4.4 其他配置 94 4.5 Spring MVC 的高级配置 98 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 Spring MVC 基本配置 87 4.4.1 静态资源映射 88 4.4.2 拦截器配置 89 4.4.3 @ControllerAdvice 91 4.4.4 其他配置 94 4.5 Spring MVC 的高级配置 98 ...

    Spring_Framework_ API_5.0.5 (CHM格式)

    Spring Web Reactive 在 spring-webmvc 模块中现有的(而且很流行)Spring Web MVC旁边的新的 spring-web-reactive 模块中。 请注意,在 Spring5 中,传统的 SpringMVC 支持 Servlet3.1 上运行,或者支持 JavaEE7 的...

    Spring Boot实战 ,丁雪丰 (译者) .pdf

    注解),以及面向注解的Spring MVC编程模型。不用再去显式地声明应用程序组件了,也 不再需要去继承某个基础的控制器类了。这玩意儿不能更好了。  到了Spring 3.0,我们有了一套基于Java的全新配置,它能够取代XML...

    Spring中文帮助文档

    2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态...

    Spring API

    2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于Annotation的控制器 2.5.4. Spring MVC的表单标签库 2.5.5. 对Tiles 2 支持 2.5.6. 对JSF 1.2支持 2.5.7. JAX-WS支持 2.6. 其他 2.6.1. 动态...

Global site tag (gtag.js) - Google Analytics