@ModelAttribute使用详解

此注解用于注释在方法上或请求参数中,用来携带 model到显示页面进行显示。

1@ModelAttribute注释方法 

如果把@ModelAttribute放在方法的注解上时,代表的是:Controller的所有方法在调用前,先执行此@ModelAttribute方法。可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。比如权限的验证(也可以使用Interceptor)等例如:

  @ModelAttribute  
  public Account addAccount(@RequestParam String number) {  

      return accountManager.findAccount(number);  

  } 

这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。也可以通过@ModelAttributeAttributename)来指定model的名称。如:

 @ModelAttribute("attributeName")  
 public String addAccount(@RequestParam String abc) {  

     return abc;  

 }  

这个例子中使用@ModelAttribute注释的value属性,来指定model属性的名称。model属性对象就是方法的返回值。也可以通过@ModelAttributeAttributename)来指定model的名称。如:

@ModelAttribute("attributeName")  
public String addAccount(@RequestParam String abc) {  
         return abc;  
 }  

这时这个方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求"/helloWorld.do"转换为逻辑视图helloWorldModel属性名称有@ModelAttribute(value=””)指定,相当于在request中封装了key=attributeNamevalue=hi

 

2@ModelAttribute注释一个方法的参数 

注解在参数上时,可以Form表单或URL参数中获取参数并绑定到model(实际上,不做此注释也能拿到user对象) 

public class HelloWorldController {  

    @ModelAttribute("user")  
    public User addAccount() {  

           return new User("jz","123");  

     }  

    @RequestMapping(value = "/helloWorld")  
    public String helloWorld(@ModelAttribute("user") User user) {  

           user.setUserName("jizhou");  

           return "helloWorld";  

        }  
    }

 在这个例子里,@ModelAttribute("user") User user注释方法参数,参数user的值来源于addAccount()方法中的model属性。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值