摘要:用在方法上的指示那個(gè)方法的目的是添加一個(gè)或多個(gè)模型屬性。在控制器中的方法的調(diào)用時(shí)機(jī)是在同一個(gè)控制器中的方法之前。注意,有兩種形式的方法。注解也可以用在方法上。
??這一部分翻譯自 Spring 5.0.0.M1 文檔中的 Using @ModelAttribute on a method 一節(jié)。這一節(jié)的演示示例在這個(gè)項(xiàng)目的 mvc 分支中的 ModelAttrController.java 文件中。
??注解@ModelAttribute可以用在方法或者方法參數(shù)上。這一節(jié)解釋它用在方法上,下一節(jié)解釋把它用在方法參數(shù)上。
??用在方法上的@ModelAttribute指示那個(gè)方法的目的是添加一個(gè)或多個(gè)模型屬性(model attributes)。這樣的方法和@RequestMapping方法支持的參數(shù)類型相同,但是不能直接映射到請(qǐng)求。在控制器中的@ModelAttribute方法的調(diào)用時(shí)機(jī)是在同一個(gè)控制器中的@RequestMapping方法之前。下面是幾個(gè)例子:
// 添加一個(gè)屬性 // 這個(gè)方法的返回值被添加到名為 “account” 的模型下 // 你可以自定義這個(gè)名字,像這樣 @ModelAttribute("myAccount") @ModelAttribute public Account addAccount(@RequestParam String number) { return accountManager.findAccount(number); } // 添加多個(gè)屬性 @ModelAttribute public void populateModel(@RequestParam String number, Model model) { model.addAttribute(accountManager.findAccount(number)); // add more ... }
??@ModelAttribute方法用于構(gòu)建帶有常用屬性的模型,比如用狀態(tài)或者寵物類型填充一個(gè)下拉框,或者取回一個(gè)命令對(duì)象如 Account,把它用作 HTML 表單數(shù)據(jù)。后一種情況在下一節(jié)會(huì)進(jìn)行更深入的討論。
??注意,有兩種形式的@ModelAttribute方法。第一種,方法通過(guò)返回屬性來(lái)隱式地添加屬性。第二種,方法接受一個(gè)Model參數(shù),并把任何數(shù)量的屬性添加給它。你可以根據(jù)需要選擇其中的任何一種。
??一個(gè)控制器可以有任何數(shù)量的@ModelAttribute方法。所有的這些方法都在同一個(gè)控制器中的@RequestMapping方法之前調(diào)用。【很遺憾,我現(xiàn)在還沒有找到關(guān)于一個(gè)控制器中有多個(gè)@ModelAttribute方法時(shí),這些方法的調(diào)用順序的說(shuō)明。以后找到的話會(huì)補(bǔ)上】
??@ModelAttribute方法也可以定義在一個(gè)帶有@ControllerAdvice注解的類中,這些方法應(yīng)用于很多控制器。詳情參見“使用@ControllerAdvice和@RestControllerAdvice通知控制[2]”一節(jié)
??在不顯式指定屬性名的時(shí)候發(fā)生了什么?這種情況下,被賦值的模型屬性的缺省名稱是基于其類型的。比如,如果一個(gè)方法返回一個(gè) Account 類型的對(duì)象的話,那么缺省名就是“account”。你可以通過(guò)注解@ModelAttribute的值來(lái)改變。如果直接添加屬性到模型的話,請(qǐng)使用合適的方法 addAttribute(..) 的重載。
??注解@ModelAttribute也可以用在@RequestMapping方法上。這種情況下,@RequestMapping方法的返回值被攔截為一個(gè)模型屬性,而不是一個(gè)視圖名。關(guān)于視圖,參見源文檔的18.13.3節(jié)“視圖——RequestToViewNameTranslator”。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/66053.html
摘要:本節(jié)解釋它用在參數(shù)上的情形。一個(gè)用在方法參數(shù)上的注解指示了參數(shù)應(yīng)該從模型這里所說(shuō)的模型指中獲取。方法是一種常用的從數(shù)據(jù)庫(kù)中獲取屬性的方式,可以通過(guò)使用注解把這種屬性在各個(gè)請(qǐng)求之間共享。下一步是數(shù)據(jù)綁定。 ??這一部分實(shí)例見這個(gè)項(xiàng)目的 mvc 分支下的 ModelAttrArgsController.java ??上節(jié)說(shuō)過(guò),@ModelAttribute可以用在方法或方法參數(shù)上。本節(jié)解...
摘要:雖然它不是必須,但是它是個(gè)很好的輔助官方解釋首先看看官方的對(duì)它怎么說(shuō)它將方法參數(shù)方法返回值綁定到的里面。解析注解標(biāo)注的方法參數(shù),并處理標(biāo)注的方法返回值。 每篇一句 我們應(yīng)該做一個(gè):胸中有藍(lán)圖,腳底有計(jì)劃的人 前言 Spring MVC提供的基于注釋的編程模型,極大的簡(jiǎn)化了web應(yīng)用的開發(fā),我們都是受益者。比如我們?cè)贎RestController標(biāo)注的Controller控制器組件上用@...
摘要:和一起使用參照博文從原理層面掌握的使用一起學(xué)。至于具體原因,可以移步這里輔助理解從原理層面掌握的使用核心原理篇一起學(xué)再看下面的變種例子重要訪問(wèn)。 每篇一句 每個(gè)人都應(yīng)該想清楚這個(gè)問(wèn)題:你是祖師爺賞飯吃的,還是靠老天爺賞飯吃的 前言 上篇文章 描繪了@ModelAttribute的核心原理,這篇聚焦在場(chǎng)景使用上,演示@ModelAttribute在不同場(chǎng)景下的使用,以及注意事項(xiàng)(當(dāng)然有些...
摘要:分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測(cè)該方法是否使用了注解。作用該注解用于將的方法返回的對(duì)象,通過(guò)適當(dāng)?shù)霓D(zhuǎn)換為指定格式后,寫入到對(duì)象的數(shù)據(jù)區(qū)。用于注解層,在類上面注解。使用標(biāo)記的參數(shù)。 1、@Controller 在SpringMVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)處理層處理之后封裝成一個(gè)M...
摘要:關(guān)鍵注解的關(guān)鍵注解主要有其中主要是用于標(biāo)記該類是一個(gè)控制器,用于指示的哪一個(gè)類或方法來(lái)處理請(qǐng)求動(dòng)作,即用于標(biāo)識(shí)具體的處理器。默認(rèn)已經(jīng)裝配了作為組件的實(shí)現(xiàn)類,而由使用,將請(qǐng)求信息轉(zhuǎn)換為對(duì)象。 關(guān)鍵注解 springmvc的關(guān)鍵注解主要有@Controller/@RequestMapping/@RequestParam/@PathVariable/@RequestHeader/@Cooki...
閱讀 3520·2021-11-25 09:43
閱讀 1279·2021-09-08 09:45
閱讀 2651·2021-09-07 09:59
閱讀 1515·2021-08-09 13:45
閱讀 3362·2019-08-30 15:54
閱讀 702·2019-08-29 18:35
閱讀 522·2019-08-29 17:18
閱讀 1004·2019-08-29 14:10