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

类型转换

一些带注释的控制器方法参数,它们表示String-基于请求的输入(例如@RequestParam,@RequestHeader,@PathVariable,@MatrixVariable@CookieValue) 如果参数声明为String.spring-doc.cadn.net.cn

对于此类情况,将根据配置的转换器自动应用类型转换。 默认情况下,简单类型 (int,long,Date等)支持。您可以自定义 类型转换WebDataBinder(参见DataBinder) 或通过注册Formatters使用FormattingConversionService. 参见 Spring Field Formattingspring-doc.cadn.net.cn

类型转换中的一个实际问题是空 String 源值的处理。 如果该值变为null作为类型转换的结果。 这可能是这种情况Long,UUID和其他目标类型。如果要允许null要注入,请使用requiredflag 的 Token,或声明 参数设置为@Nullable.spring-doc.cadn.net.cn

从 5.3 开始,即使在类型转换之后,也会强制使用非 null 参数。如果您的处理程序 方法也打算接受 null 值,请将您的参数声明为@Nullable或将其标记为required=false在相应的@RequestParam等注释。这是 针对 5.3 升级中遇到的回归的最佳实践和推荐解决方案。spring-doc.cadn.net.cn

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