>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24235 个阅读者 刷新本主题
 * 贴子主题:  @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开发-->通过JPA API检索数据
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->
  Vue3开发-->绑定CSS样式
  Spring Boot 入门,用 Spring Boot 写第一个 HelloWorld 程序
  Netty初识
  WebFlux 响应式编程初体验
  重新理解响应式编程
  Spring数据验证 中@NotNull, @NotEmpty和@NotBlank之间的区别
  Spring MVC控制器类的方法的所支持的方法参数类型
  Spring Cloud构建微服务架构的断路器
  Spring Cloud构建微服务架构: 消息总线
  Spring Security中使用的责任链模式
  微服务中的Kafka与Micronaut
  使用idea和gradle编译spring5源码
  nginx详解反向代理、负载均衡、LNMP架构上线动态网站
  Spring入门基础知识
  分布式架构知识体系
  Spring与MyBatis整合
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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