型別轉換

一些代表基於String的請求輸入(例如@RequestParam@RequestHeader@PathVariable@MatrixVariable@CookieValue)的帶註解的控制器方法引數,如果引數宣告為String以外的型別,則可能需要型別轉換。

對於這種情況,型別轉換會根據配置的轉換器自動應用。預設情況下,支援簡單型別(intlongDate等)。您可以透過WebDataBinder(參見DataBinder)或透過向FormattingConversionService註冊Formatters來定製型別轉換。參見Spring 欄位格式化

型別轉換中的一個實際問題是對空字串源值的處理。如果此類值經型別轉換後變為null,則將其視為缺失。LongUUID和其他目標型別可能出現這種情況。如果您希望允許注入null,請使用引數註解上的required標誌,或將引數宣告為@Nullable

從 5.3 開始,即使在型別轉換之後,也會強制執行非空引數。如果您的處理程式方法也打算接受空值,請將您的引數宣告為@Nullable或在相應的@RequestParam等註解中將其標記為required=false。這是最佳實踐,也是解決 5.3 升級中遇到的迴歸問題的推薦方案。

或者,您也可以專門處理,例如,必需的@PathVariable情況下產生的MissingPathVariableException。轉換後的空值將被視為原始空值,因此將丟擲相應的Missing…​Exception變體。

© . This site is unofficial and not affiliated with VMware.