真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

七、SpringMVC之ModelAttribute-創(chuàng)新互聯(lián)

   前面幾篇文章分別說了spring mvc如何傳參數(shù)到后臺,如何返回參數(shù)到前臺。今天來說一下,spring mvc的ModelAttribute注解,這個注解有什么作用,什么場景下使用?

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的平頂山網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

    1、應(yīng)用場景:數(shù)據(jù)更新。例如有一個實體User,其中有id、userName、age、email、createTime等屬性,createTime定義了用戶的創(chuàng)建時間,一般都是后臺自動獲取并賦值。除了id和createTime之外的User的其他屬性,都是可以編輯修改的,如下圖所示。

七、Spring MVC之ModelAttribute

而此時我們的后臺,一般會使用對象進(jìn)行接收參數(shù),如下所示:

@RequestMapping("/testModelAttribute") public String testModelAttribute(User user){     System.out.println(user);     return "success"; }

測試代碼,設(shè)定user的默認(rèn)值,可以看到后臺的輸出

User{userName='lxy', password='null', email='test@126.com',  age=20, createTime=null, address=null}

,user對象只有userName、age、emai有值,其它的都是null:

    userName: 
    age: 
    email: 
    

如果我們這個時候更新數(shù)據(jù)庫的話,就需要先查詢一下數(shù)據(jù)庫,讀出來之前user對象的值,然后把前臺傳遞過來的參數(shù)設(shè)置到user上,否則就會導(dǎo)致部分?jǐn)?shù)據(jù)丟失。

另一種解決方案是在編輯之前,先把數(shù)據(jù)查詢出來,然后在頁面上使用隱藏域,把其它的值放在隱藏域中,然后使用在提交form表單的時候,把隱藏域的數(shù)據(jù)一并提交到后臺。

2、配合使用ModelAttribute注解,這里根據(jù)參數(shù)userName,模擬從數(shù)據(jù)庫中讀取數(shù)據(jù)

@ModelAttribute public void getUserById(@RequestParam(value = "userName", required = false)     String userName, Map map) {     System.out.println("任何時候我都會被調(diào)用");     if(userName != null) {         //模擬讀取數(shù)據(jù)庫中的數(shù)據(jù)         User user = new User();         user.setUserName("lxy");         user.setAge(18);         user.setPassword("123456");         user.setEmail("lxy@126.com");         user.setCreateTime(new Date());         map.put("user", user);     } }

此時,再次運(yùn)行項目,可以看到后臺的輸出為:email和age是前臺傳遞過來的參數(shù),而password和createTime都是從數(shù)據(jù)庫中讀取出來的數(shù)據(jù),這就可以直接根據(jù)user實體,更新數(shù)據(jù)庫了。

User{userName='lxy', password='123456', email='test@126.com', age=20,  createTime=Mon Mar 20 18:03:31 CST 2017, address=null}

3、注意,訪問controller中的任意的方法,都會調(diào)用被ModelAttribute注解的方法。所以說這個注解要慎用,在適用在注解之前,需要認(rèn)真考慮是否真的合適。

@RequestMapping("/testRun") public String testRun(){     System.out.println("我就看看會不會調(diào)用ModelAttribute注解修飾的方法");     return "success"; }

訪問上面的方法,可以看到下面的輸出,被ModelAttribute注解修飾的方法,會先于目標(biāo)方法執(zhí)行:

任何時候我都會被調(diào)用 我就看看會不會調(diào)用ModelAttribute注解修飾的方法

4、在目標(biāo)方法的參數(shù)上使用ModelAttribute注解

上面我們看到在被ModelAttribute注解修飾的方法上,如果要想被取到值,在方法中必須要這樣設(shè)置,

User user = new User(); user.setUserName("lxy"); user.setAge(18); user.setPassword("123456"); user.setEmail("lxy@126.com"); user.setCreateTime(new Date()); //如果設(shè)置的key為temp,則目標(biāo)方法上必須要有相應(yīng)的注解聲明,才能起到效果 map.put("temp", user);@RequestMapping("/testModelAttribute2") public String testModelAttribute2(@ModelAttribute("temp")User user){     //這里的temp與被ModelAttribute注解修飾的方法的存放的key一致     System.out.println(user);     return "success"; }

項目源代碼:

https://git.oschina.net/acesdream/spring-mvc

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文題目:七、SpringMVC之ModelAttribute-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/ddhghs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部