对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

类型转换

某些表示基于 String 的请求输入的注解控制器方法参数(例如 @RequestParam@RequestHeader@PathVariable@MatrixVariable@CookieValue) 在参数声明类型不是 String 时,可能需要进行类型转换。spring-doc.cadn.net.cn

对于此类情况,类型转换会根据配置的转换器自动应用。 默认情况下,支持简单类型(intlongDate 等)。您可以通过 WebDataBinder 自定义 类型转换(参见 DataBinder),或者向 FormattingConversionService 注册 Formatters。 请参阅 Spring 字段格式化spring-doc.cadn.net.cn

类型转换中的一个实际问题是,如何处理空字符串(empty String)作为源值的情况。 如果在类型转换后该值变为 null,则将其视为缺失值。 这种情况可能发生在 LongUUID 以及其他目标类型上。如果您希望允许注入 null 值, 可以在参数注解上使用 required 标志,或者将参数声明为 @Nullablespring-doc.cadn.net.cn

从 5.3 版本开始,即使在类型转换之后,也会强制执行非空参数检查。如果你的处理方法也需要接受 null 值,请将参数声明为 @Nullable,或者在相应的 required=false 等注解中将其标记为 @RequestParam。这是一种最佳实践,也是解决在升级到 5.3 版本时遇到的回归问题的推荐方案。spring-doc.cadn.net.cn

或者,您可以专门处理例如在必需的 MissingPathVariableException 情况下所产生的 @PathVariable。转换后的 null 值将被视为原始值为空,因此会抛出相应的 Missing…​Exception 异常变体。spring-doc.cadn.net.cn