054@ModelAttribute修饰方法

@ModelAttribute修饰的控制器方法表示在执行控制器处理方法之前执行该方法
并且该方法的返回值回作为value传给Model,那么其key是什么呢?两种情况:

  1. @ModelAttribute指定了value或者name属性:key为其指定值
  2. @ModelAttribute没有指定value或者name属性:key为其返回值的类型首字母小写,比如string

直接上栗子:
用户请求url:

/my?name=lyx&age=22

控制器:

@Controller
public class UserController
{
    @ModelAttribute
    public void m1(String name,Model model)
    {
        model.addAttribute("name",name);
    }
    @ModelAttribute
    public String m2(Integer age,Model model)
    {
        model.addAttribute("age",age);
        return "我是string的值!";
    }
    @RequestMapping("/my")
    @ModelAttribute("控制器处理方法返回")
    public Integer login()
    {
       return 888;
    }
}

我们看到@ModelAttribute居然把控制器处理方法都修饰了,那么返回值该如何理解?
当控制器处理方法被@ModelAttribute修饰时,那么该返回值不再作为逻辑是图名,而是作为value传给Model,那么没有逻辑视图名返回的情况下就轮到RequestToViewTranslator登场了,其解析时逻辑视图名就是用户请求的url,假如用户请求的是/xyz那么逻辑视图名就是xyz,在上面的示例中逻辑视图名就是my

my.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        name:${name}<br/>
        age:${age}<br/>
        string:${string}<br/>
        控制器处理方法返回:${控制器处理方法返回}<br/>
    </body>
</html>

结果:

name:lyx
age:22
string:我是string的值!
控制器处理方法返回:888

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值