类型转换

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

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

类型转换中的一个实际问题是对空字符串源值的处理。如果此类值经类型转换后变为null,则将其视为缺失。LongUUID和其他目标类型可能出现这种情况。如果您希望允许注入null,请使用参数注解上的required标志,或将参数声明为@Nullable

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

或者,您也可以专门处理,例如,必需的@PathVariable情况下产生的MissingPathVariableException。转换后的空值将被视为原始空值,因此将抛出相应的Missing…​Exception变体。

© . This site is unofficial and not affiliated with VMware.