>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 26277 个阅读者 刷新本主题
 * 贴子主题:  @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面向对象编程-->Java语言的基本语法和规范
  JavaWeb开发-->JSP中使用JavaBean(Ⅱ)
  JSP与Hibernate开发-->数据库事务的概念和声明
  Java网络编程-->Socket用法详解
  精通Spring-->Vue指令
  Vue3开发-->Vue CLI脚手架工具
  好消息,《Spring Cloud Alibaba微服务开发零基础入门到实操...
  超全Redis命令总结,墙裂建议收藏,说不定就用上了呢
  git 常用指令总结
  说一下Spring @Autowired 注解自动注入流程
  新书《精通Spring:Java Web开发技术详解》出版!!!
  springmvc处理异步请求的示例
  Spring 自动注入的三种方式:byName、byType、constructor
  SSM三大框架整合详细教程
  SpringCloud Gateway-整体流程
  Spring Cloud 技术栈及架构一览
  如何实现Git服务间同步
  【Web服务开发】基于Java开发代驾定位系统,2天完成脚手架
  一睹Web服务真面目,有商业价值的Web服务是这样的
  Spring Boot 整合 Ehcache
  从响应式编程到“好莱坞”
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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