类型转换
一些表示基于字符串的请求输入的带注解的控制器方法参数(例如 @RequestParam
、@RequestHeader
、@PathVariable
、@MatrixVariable
和 @CookieValue
)如果参数声明为除 String
之外的其他类型,则可能需要类型转换。
对于此类情况,类型转换将根据配置的转换器自动应用。默认情况下,支持简单类型(int
、long
、Date
等)。您可以通过 WebDataBinder
(参见 DataBinder
)或通过在 FormattingConversionService
中注册 Formatters
来自定义类型转换。请参阅 Spring 字段格式化。
类型转换中的一个实际问题是空字符串源值的处理。如果该值在类型转换后变为 null
,则将其视为缺失。对于 Long
、UUID
和其他目标类型,可能出现这种情况。如果要允许注入 null
,请在参数注解上使用 required
标志,或将参数声明为 @Nullable
。
从 5.3 开始,即使在类型转换后也会强制执行非空参数。如果您的处理程序方法也打算接受 null 值,请将您的参数声明为 或者,您可以在特定情况下处理例如在必需的 |