>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 18760 个阅读者 刷新本主题
 * 贴子主题:  @ModelAttribute注解用法详解 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-07-01 02:21:45     消息  查看  搜索  好友  邮件  复制  引用

@ModelAttribute
该Controller类所有方法执行前,先调用此@ModelAttribute方法,可用于注解和方法参数中。
@ModelAttribute注解用于将请求参数绑定到Model对象

使用方式一:注解void返回值的方法

此方法在@RequestMapping注解的方法之前执行,通过方法model.addAttribute(key,value)绑定数据,通过login方法的model.containsAttribute(“username”)测试userModel方法是否起作用,因为@ModelAttribute注释的方法在请求方法之前起作用。

@Controller
@RequestMapping(value="/")
public class TestModelAttributeController {

@RequestMapping(value="/result")
public String login(Model model) {
//如果测试成功,控制台输出true
System.out.println(model.containsAttribute("username"));
    System.out.println(model.containsAttribute("pwd"));
return "result";
}
@ModelAttribute
public void user(
@RequestParam("username") String username,
@RequestParam("pwd") String pwd,Model model) {
model.addAttribute("username", username);
model.addAttribute("pwd", pwd);
}
}

使用方法二:@ModelAttribute(“xxx”)注释返回具体类的方法

@ModelAttribute的value值“xxx”作为model的attributeName,userModel方法返回值作为attribute属性的值
@Controller
@RequestMapping(value="/")
public class TestModelAttributeController{

@RequestMapping(value="result")
public String login(Model model) {
model.containsAttribute("username");
return "result";
}
    /*
    * 返回的是username的值
    *相当于model.addAttribute("username", username);
    */

@ModelAttribute(value="username")
public String userModel(@RequestParam("username") String username) {
return username;
}
}

使用方式三:@ModelAttribute注释返回具体类的方法

@ModelAttribute
public User userModel(@RequestParam("username") String username,@RequestParam("pwd") String pwd){
    User  user = new User(username,pwd);
    return user;
}
public String login(Model model){
    System.out.println(model.containsAttribute("username"));
    System.out.println(model.containsAttribute("pwd"));

    return modelAttribute/result";
}

使用方式四:@ModelAttribute(“xxx”)和@RequestMapping("/yyy’)同时注释的有返回值的方法

@ModelAttribute(“xxx”)的属性值作为model的attributeName,login方法返回值作为attributeName的属性值;
RequestMapping("/yyy")作为请求路径,也同时作为视图名,即跳转页面的名称

@Controller
@RequestMapping(value="/")
public class TestModelAttributeController{

@ModelAttribute("username")
@RequestMapping(value="/result")
public String login(@RequestParam("username") String username,Model model) {

System.out.println(model.containsAttribute("username"));
return username;
}
}

程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->泛型
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->基于UDP的数据报和套接字
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->绑定CSS样式
  使用IntelliJ IDEA开发Maven HelloWorld
  RocketMQ 常用消息类型
  99%的人都能看懂的“熔断”以及最佳实践
  Redis夺命连环11问
  谈谈响应式编程
  阿里JAVA面试题剖析:Redis 和 memcached 有什么区别?
  说说微服务的优缺点
  微服务拆分实践
  Spring Cloud与Dubbo的完美融合之手「Spring Cloud Alibaba
  Spring Cloud Config 客户端的高可用实现
  SpringCloud微服务框架搭建
  Spring Boot 整合 Ehcache
  使用idea和gradle编译spring5源码
  nginx详解反向代理、负载均衡、LNMP架构上线动态网站
  springboot —— 多数据源
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。