类型转换
一些表示基于 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 |