类型转换

一些表示基于 String 的请求输入的注解控制器方法参数(例如 @RequestParam@RequestHeader@PathVariable@MatrixVariable@CookieValue)如果声明为除 String 之外的其他类型,则可能需要类型转换。

对于这些情况,将根据配置的转换器自动应用类型转换。默认情况下,支持简单类型(如 intlongDate 等)。 您可以通过 WebDataBinder(见 DataBinder)或通过向 FormattingConversionService 注册 Formatters 来自定义类型转换。见 Infra 字段格式化

类型转换中的一个实际问题是空字符串源值的处理。如果类型转换后结果为 null,则这样的值被视为缺失。这可能适用于 LongUUID 及其他目标类型。如果您希望允许注入 null,则要么在参数注解上使用 required 标志,要么将参数声明为 @Nullable

即使在类型转换后,也将强制非空参数。如果您的处理方法也打算接受空值,则要么将参数声明为 @Nullable, 要么在相应的 @RequestParam 等注解中将其标记为 required=false。这是最佳实践。

或者,您可能特别处理例如必需的 @PathVariable 导致的 MissingPathVariableException。转换后的结果为 null 将被视为原始空值,因此将抛出相应的 Missing…​Exception 变体。