>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24236 个阅读者 刷新本主题
 * 贴子主题:  @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开发-->自定义JSP标签(Ⅰ)
  JSP与Hibernate开发-->使用JPA和注解
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->Vue Router路由管理器
  Vue3开发-->Vue CLI脚手架工具
  推荐一本微服务开发经典书籍《Spring Cloud Alibaba微服务开...
  从零开始手写 spring ioc 框架,深入学习 spring 源码
  拦截器不拦截静态资源的三种处理方法
  @Resource注解的用法
  【项目实践】后端接口统一规范的同时,如何优雅地扩展规范
  Spring Data JPA详解
  阿里JAVA面试题剖析:Redis 和 memcached 有什么区别?
  Spring Cloud构建微服务架构的服务注册与发现
  Spring Cloud构建微服务架构: 消息总线
  使用 Flask-RESTful 设计 RESTful API
  SpringBoot构建Restful接口
  开发一个Java项目的基本流程
  kubernetes 中的资源
  Spring5新特性之日志体系
  分布式架构知识体系
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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