>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 25105 个阅读者 刷新本主题
 * 贴子主题:  @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与Hibernate开发-->Web运作原理(Ⅲ)
  Java网络编程-->Servlet技术详解(Ⅲ)
  精通Spring-->Java应用分层架构及软件模型
  Vue3开发-->第一个helloapp应用
  Spring Boot 入门,用 Spring Boot 写第一个 HelloWorld 程序
  Redis为什么单线程能够支持高并发
  Spring boot参考指南
  面试官问什么是Spring循环依赖,该如何回答?
  卫琴姐姐制作的最新视频课程:基于Spring的JavaWeb开发技术详...
  springmvc处理异步请求的示例
  Spring MVC和前后端分离的RESTFul框架
  Spring Cloud构建微服务架构: 消息总线
  理解 RESTful 风格的 API
  网红框架SpringBoot2.x之定制参数浅析
  Zabbix后端存储ES的优化实践
  酒店评论数据分析和挖掘-展现数据分析全流程:报告展示篇
  微架构 springcloud-07. springboot-静态资源处理
  springmvc+ajax异步上传图片
  spring整合WebService入门详解
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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