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