SpringMVC5中,@ModelAttribute注解詳解


看這個注解的前提最好熟悉一下SpringMVC的model組件,該注解可以有五種使用方式:

 

①②③為 @ModelAttribute 跟@RequestMapping 分開修飾方法,被@ModelAttribute修飾的方法比 @RequestMapping修飾的方法先一步調用!!

④是 @ModelAttribute 跟 @RequestMapping 同時修飾方法,

⑤ 是@ModelAttribute 修飾方法的參數。

 

 

  ①:方法返回值為void,@ModelAttribute注解沒有指定任何屬性,這樣的話需要將Model或者map傳入方法中,如下:

    key為user1,value為User對象,可以用 ${requestScope.user1.userName} 取出

  @ModelAttribute
    //@ModelAttribute 沒有指定值,且被修飾的方法返回值為void,則需要借助map或者model將數據模型放入request域
    public void getUser(Map<String, Object> map) {
        System.out.println("ModelAttribute1..");
        map.put("user1", new User("kelin","123aaa"));
    }

    

  ②:方法返回值為普通的pojo,@ModelAttribute注解沒有指定任何屬性,這樣的話,request域中存入的對象名字默認為類型首字母小寫,如下:

    key為user(類型首字母小寫),value為User對象,可以用 ${requestScope.user.userName} 取出

  @ModelAttribute
    //@ModelAttribute 沒有指定值,且被修飾方法有pojo類型的返回值,則request域中 key為返回值類型第一個字母小寫的字符串,value為返回值
    public User getUser() {
        System.out.println("ModelAttribute2..");
        return new User("kelin","123aaa");
    }

    

  ③:方法返回值為普通的pojo,@ModelAttribute注解指定了value屬性,這樣的話,request域中就放入了一個對象,如下:

    key為user2,value為User對象,可以用 ${requestScope.user2.userName} 取出

  @ModelAttribute("user2")
    //@ModelAttribute 的值就是request域中的key,被該注解修飾的方法的返回值為對應的value
    public User getUser() {
        System.out.println("ModelAttribute3..");
        return new User("kelin","123aaa");
    }

 

  ④:兩個注解同時修飾方法,看注釋解釋,有點不一樣,返回的東西不是視圖,而是request域中的值,返回的視圖變成了 @RequestMapping中指定的value

  /*
     * @ModelAttribute 和 @RequestMapping 同時修飾一個方法
     * 
     * @ModelAttribute 中value為 request域中的key,被修飾的方法返回值為request域中的value
     * @RequestMapping 中value為 返回的視圖名,此例中相當於定向到xxx/testModelAttribute4.jsp
     */
    
    @ModelAttribute(value="user")
    @RequestMapping(value="/testModelAttribute4..")
    public User testModelAttribute() {
        return new User("kelin","123aaa");
    }

 

  ⑤:@ModelAttribute 修飾方法參數(最常用),參數直接封裝到對象中,比如常用的 pageNo,pageSize...

  /*
     * @ModelAttribute用於修飾入參,前台傳過來的值自動賦予入參對於的屬性
     */
    @RequestMapping("/testModelAttribute5")
    public String testModelAttribute(@ModelAttribute User user) {
        return "modelAttribute";
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM