@ModelAttribute的使用

目录

1.注释返回值为void的方法

2.注释返回值为具体对象的方法

3.对象合并


写在前面,我使用的是springboot2.6.7来进行测试。

1.注释返回值为void的方法

@Controller
public class HelloController {

    @ModelAttribute
    public void addMessage(String message, Model model){
        model.addAttribute("message",message);
    }

    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
}

当执行http://localhost:8080/hello?message=xxx的时候,先执行addMessage方法获取message参数的值放在model中,在视图中可以获取。

 

 

2.注释返回值为具体对象的方法

    @ModelAttribute(value = "myUser")
    public User addUser() {
        User user = new User();
        user.setName("小王");
        user.setSex("男");
        user.setAge(12);
        return user;
    }

    @GetMapping("/hello2")
    public String hello() {
        return "hello" ;
    }

在执行/hello2之前会先调用addUser方法,会隐式的执行model.addAttribute("myUser",user);

 这里我们在注解的后面指定了valu的值为myUser,因此这里model中的attributeName就为myUser,如果我们不指定Value的值,那么默认就是返回类型的类名的小写,这里如果我们不写那么就是这样的model.addAttribute("user",user);

 页面如下

 

执行方法

 

3.对象合并

比如我们在修改某条记录的时候,我们仅仅是修改了某一个字段的值,其他的字段值不变。这里我们模拟一下。

    /**
     *  这里我们模拟,在对数据修改前先查询数据库的记录,返回完整的User对象
     * @return
     */
    @ModelAttribute(value = "myUser")
    public User getUser() {
        User user = new User();
        user.setName("小王");
        user.setSex("男");
        user.setAge(12);
        return user;
    }

    /**
     *  这里只针对user对象的年龄进行修改,其余属性值保持不变
     * @param user
     * @return
     */
    @GetMapping("/hello3")
    public String hello(@ModelAttribute(value = "myUser") User user) {
        user.setAge(32);
        return "hello" ;
    }

访问方法看结果

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
@ModelAttribute是一个Spring MVC框架中的注解,用于将请求参数绑定到方法参数或模型属性上。它可以应用于方法参数、方法返回值和方法级别。以下是@ModelAttribute使用情况: 1. 在方法参数上使用@ModelAttribute注解,可以将请求参数绑定到指定名称的模型属性上。例如,在方法参数上使用@ModelAttribute("user"),可以将请求参数绑定到名为"user"的模型属性上。 2. 在方法返回值上使用@ModelAttribute注解,可以将方法返回的对象添加到模型中。例如,在方法中使用@ModelAttribute注解修饰一个方法时,返回的User对象会被放入模型中,可以在视图中使用。 3. 在方法级别使用@ModelAttribute注解,可以在处理请求之前将方法返回的对象添加到模型中。例如,在一个控制器类中,有一个带有@ModelAttribute注解的方法,该方法返回一个User对象,这个User对象会在每个请求之前添加到模型中,供其他方法使用。 总之,@ModelAttribute注解可以用来绑定请求参数到模型属性上,也可以用来将方法返回的对象添加到模型中。它是Spring MVC框架中非常常用的注解之一,可以方便地处理请求参数和模型之间的数据传递。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [@ModelAttribute运用详解](https://blog.csdn.net/weixin_45007916/article/details/107880908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢编程的夏先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值