型別轉換

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

在這種情況下,型別轉換會根據已設定的轉換器自動套用。預設情況下,支援簡單型別 (intlongDate 等)。您可以使用 WebDataBinder (請參閱 DataBinder) 或透過向 FormattingConversionService 註冊 Formatter 來客製化型別轉換。請參閱 Spring 欄位格式化

型別轉換中的一個實際問題是如何處理空的字串來源值。如果此值因型別轉換而變成 null,則會將其視為遺失。LongUUID 和其他目標型別可能會發生這種情況。如果您想要允許注入 null,請使用引數註解上的 required 旗標,或將引數宣告為 @Nullable

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

或者,您可以特別處理,例如,在需要 @PathVariable 的情況下產生的 MissingPathVariableException。轉換後的 null 值將被視為空的原始值,因此將會擲回對應的 Missing…​Exception 變體。