1. 程式人生 > >[讀書筆記] Spring MVC中的引數繫結

[讀書筆記] Spring MVC中的引數繫結

Spring通過ConversionService介面對Controller中的引數進行繫結。

對具體的型別轉換,Spring定義了三個介面:Converter,GenericConverter,ConverterFactory。

Spring還定義了ConverterRegistry介面用於在ConversionService的實現類中新增和移除Converter。

介面ConfigurableConversionService同時繼承了ConversionService和ConverterRegistry介面。

GenericConversionService實現了ConfigurableConversionService介面。可以新增Converter,GenericConverter,ConverterFactory的實現類。為了使用統一的方式轉換,本實現類類中為Converter和ConverterFactory的實現類添加了介面卡:ConverterAdaptor和ConverterFactoryAdaptor.

Spring引入了Formatter介面(繼承自Parser和Printer介面),將格式化字串轉換成特定型別的值或者將值轉換成格式化字串。

為了讓註解和Formatter關聯起來,Spring定義了AnnotationFormatterFactory<A extends Annotation>介面。

Spring的FormattingConversionService擴充套件了GenericConversionService實現類,將Parser或Printer轉換為一個Converter。

FormattingConversionServiceFactoryBean負責構造FormattingConversionService。可以為它配置Formatter或Converter。它也是Spring MVC中ConversionService的預設實現類。

<annotation-driven conversion-service="conversionService">
</annotation-driven>

<beans:bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<beans:property name="formatters">
            <beans:bean class="org.springframework.samples.mvc.convert.MaskFormatAnnotationFormatterFactory" />
	</beans:property>
</beans:bean>



相關推薦

[讀書筆記] Spring MVC引數

Spring通過ConversionService介面對Controller中的引數進行繫結。 對具體的型別轉換,Spring定義了三個介面:Converter,GenericConverter,ConverterFactory。 Spring還定義了ConverterRe

.Net MVCSelectList預設值失效的解決辦法

        今天在使用MVC的下拉控制元件時,為其繫結資料使用了SelectList,但在修改資料的時候,預設值居然繫結失敗?後來經過多番研究,原因在於控制器中提供的資料來源變數名稱和檢視中下拉列表框的name名稱一致了,導致繫結資料失敗。 解決辦法:將資料來源

SprimgMVC學習筆記(三)—— 引數

一、預設支援的引數型別 1.1 需求   開啟商品編輯頁面,展示商品資訊。    1.2 需求分析   編輯商品資訊,首先要顯示商品詳情   需要根據商品id查詢商品資訊,然後展示到頁面。   請求的url:/itemEdit.action   引數:id(商品id)   響應結果:商品編輯

Spring MVC 引數

引數繫結入口 @RequestMapping(value = "/saveUser", method = {RequestMethod.POST }) public ResponseEntity<ResultData> post

spring mvc 引數

基礎型別 原始型別:id必須要傳,否則報錯。 @RequestMapping("/test") @ResponseBody public ResponseData test(int id) {} 包裝型別:id可以不傳,後臺接受到null。 @RequestMapping("/test") @Resp

Spring實現後臺對JSON傳的陣列物件給List型別的引數

就是在後臺接收前端傳的JSON串,其中包含陣列型別的資料。例如傳一個user使用者列表,後臺用List來接收。 其實有多種方法都可以實現,大概就是JSON方式,和非JSON的key/value那種方法。但是後臺前輩告訴我,要考慮前臺不是所有都會這兩種傳參的方式,

spring mvc 通過controller 傳遞物件給jsp,並且資料,在修改值後回傳物件給controller

在controller 中需要指定 sessionAttribute的key @sessionattributes註解應用到Controller上面,可以將Model中的屬性同步到session當中。 當需要清除session當中的值得時候,我們只需要在

Spring MVC引數失敗

1.客戶端請求到達Spring MVC的Controller層以後,呼叫HandlerAdapter的方法進行方法以及引數繫結,其中這個繫結過程是自動完成的。<mvc:annotation-driven />此註解預設已匯入將json資料轉換為Java物件的be

spring mvc引數

註解驅動控制器 @RequestMapping對映請求 通過標註@Controller,再通過<context:component-scan>掃描相應類包,即可使POJO成為一個可以處理請求的控制器。 Spring mvc通過@RequestMapping將請求

Spring MVC POST 引數無法

Spring MVC 控制器,方法的引數突然繫結不上。 查看了相關的資料:這裡、這裡,都是說與 Content-Type 屬性有關。 但從程式碼看,一切正常,並沒有網上描述的情況。 換了一臺電腦後,發現一切又恢復正常。想到最近優化過 Tomcat 。於是

spring mvc的控制器方法引數從哪裡傳進來?

編寫控制器方法的時候很奇怪,spring是怎麼知道你控制器方法的引數型別,並且注入正確的物件呢? 比如下面這樣 @RequestMapping(value="/register", method=GET) public String showRegistrationForm(Model mode

WinformCombox資料來源 型別作為引數傳遞

//呼叫 IniCombox(cbChannelName, typeof(Model.SystemEnum.ChannelName)); //具體實現 public void IniCombox(Relations.Control.ComBox cb, Type type)

ODBC:Datetime 欄位溢位。秒的小數精度超出了在引數指定的小數位數。

在使用ODBC將SQL_TIMESTAMP_STRUCT格式的資料儲存到MS SQL Server的datetime欄位時,報如下錯誤: Datetime 欄位溢位。秒的小數精度超出了在引數繫結中指定的小數位數。  C++程式碼如下: void execSql(SQ

SpringMVC引數註解詳解及其使用場景

我認為只有深刻地研究過人,才能創造出人物,如同只有認真地學習了一種語言才能講它一樣。——《茶花女》 0、引言 最近在寫一個介面的時候,採用put請求,接收引數時採用了兩個@requestparam接收。前端通過application/json傳來兩個引數,測

spring @ModelAttribute變數中文亂碼的解決辦法

網上找了一些方法: 方法一 在專案的web.xml中配置spring的Character Encoding Filter <!-- Servlet Encoding Start --> <filter> <filter

SpringBoot自定義引數(以Date日期為例)

有時候前臺傳過來一個日期型別,後臺接收就比較麻煩,這種時候就是用SpringMVC中的轉換器,轉換器在SpringMVC中是非常重要的,SpringMVC內部也實現了很多轉換器:實現自己的日期轉換器註冊測試看看:結果:轉化成功!

MVC DropdownList 怎麼資料庫的值

1.從資料庫讀取資料    List<GetCitInfo> modelcitys = new List<GetCitInfo>();             modelcitys = hpmDal.GetlistCityInfo(); 2.將資料

mybatis傳多個引數(不使用@param註解情況下),3.4.2版本之後使用#{0}-#{n}引起的引數異常,以及settings屬性useActualParamName的作用。

解決方案: mybatis的xml配置檔案中宣告settings屬性的useActualParamName引數值為false <setting name="useActualParamName" value="false" /> 程式碼展示

【實踐筆記Spring MVCRestful API使用 Swagger2 構建

1、Swagger2是什麼? Swagger 是一款RESTFUL介面的文件線上自動生成+功能測試功能軟體。 Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。檔案的方法,引數和模型緊密

SpringMVC引數(從請求接受引數

引數繫結(從請求中接收引數) 1)預設型別: 在controller方法中可以有也可以沒有,看自己需求隨意新增. httpservletRqeust,httpServletResponse,htt