#@ModelAttribute 的使用(非原創(chuàng))

標(biāo)簽(空格分隔): SpringMVC


@ModelAttribute一個具有如下三個作用:

  1. 綁定請求參數(shù)到命令對象:放在功能處理方法的入?yún)⑸蠒r,用于將多個請求參數(shù)綁定到一個命令對象,從而簡化綁定流程,而且自動暴露為模型數(shù)據(jù)用于視圖頁面展示時使用
  2. 暴露表單引用對象為模型數(shù)據(jù):放在處理器的一般方法(非功能處理方法)上時,是為表單準(zhǔn)備要展示的表單引用對象,如注冊時需要選擇的所在城市等,而且在執(zhí)行功能處理方法(@RequestMapping 注解的方法)之前,自動添加到模型對象中,用于視圖頁面展示時使用
  3. 暴露@RequestMapping方法返回值為模型數(shù)據(jù):放在功能處理方法的返回值上時,是暴露功能處理方法的返回值為模型數(shù)據(jù),用于視圖頁面展示時使用。

綁定請求參數(shù)到指定對象

public String test1(@ModelAttribute("user") UserModel user) 

只是此處多了一個注解@ModelAttribute("user"),它的作用是將該綁定的命令對象以“user”為名稱添加到模型對象中供視圖頁面展示使用。我們此時可以在視圖頁面使用${user.username}來獲取綁定的命令對象的屬性。

綁定請求參數(shù)到命令對象支持對象圖導(dǎo)航式的綁定,如請求參數(shù)包含“?username=zhang&password=123&workInfo.city=bj”自動綁定到user中的workInfo屬性的city屬性中。

暴露表單引用對象為模型數(shù)據(jù)

/** 
 * 設(shè)置這個注解之后可以直接在前端頁面使用hb這個對象(List)集合 
 * @return 
 */  
@ModelAttribute("hb")  
public List<String> hobbiesList(){  
    List<String> hobbise = new LinkedList<String>();  
    hobbise.add("basketball");  
    hobbise.add("football");  
    hobbise.add("tennis");  
    return hobbise;  
}  

JSP頁面展示出來

<br>  
初始化的數(shù)據(jù) :${hb }  
<br>  
  
    <c:forEach items="${hb}" var="hobby" varStatus="vs">  
        <c:choose>  
            <c:when test="${hobby == 'basketball'}">  
            籃球<input type="checkbox" name="hobbies" value="basketball">  
            </c:when>  
            <c:when test="${hobby == 'football'}">  
                足球<input type="checkbox" name="hobbies" value="football">  
            </c:when>  
            <c:when test="${hobby == 'tennis'}">  
                網(wǎng)球<input type="checkbox" name="hobbies" value="tennis">  
            </c:when>  
        </c:choose>  
    </c:forEach>  

暴露@RequestMapping方法返回值為模型數(shù)據(jù)

public @ModelAttribute("user2") UserModel test3(@ModelAttribute("user2") UserModel user)  

大家可以看到返回值類型是命令對象類型,而且通過@ModelAttribute("user2")注解,此時會暴露返回值到模型數(shù)據(jù)( 名字為user2 ) 中供視圖展示使用
@ModelAttribute 注解的返回值會覆蓋@RequestMapping 注解方法中的@ModelAttribute 注解的同名命令對象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容