型別轉換
一些表示基於 String
的請求輸入(例如 `@RequestParam`、`@RequestHeader`、`@PathVariable`、`@MatrixVariable` 和 `@CookieValue`)的帶註解的 Controller 方法引數,如果宣告的引數型別不是 String
,則可能需要型別轉換。
對於這種情況,型別轉換會根據配置的轉換器自動應用。預設情況下,支援簡單型別(int
、long
、Date
等)。你可以透過 WebDataBinder
(參閱DataBinder
)或向 FormattingConversionService
註冊 Formatter
來自定義型別轉換。參閱Spring 欄位格式化。
型別轉換中一個實際的問題是空 String 源值的處理。如果這種值在型別轉換後變成 null
,則會被視為缺失。對於 Long
、UUID
和其他目標型別來說,情況可能如此。如果你想允許注入 null
值,可以在引數註解上使用 required
標誌,或將引數宣告為 @Nullable
。
從 5.3 版本開始,即使在型別轉換後,非 null 引數也會被強制執行。如果你的處理方法也打算接受 null 值,可以將引數宣告為 另外,你也可以專門處理例如 required |