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