类型转换
一些代表基于String的请求输入(例如@RequestParam、@RequestHeader、@PathVariable、@MatrixVariable和@CookieValue)的带注解的控制器方法参数,如果参数声明为String以外的类型,则可能需要类型转换。
对于这种情况,类型转换会根据配置的转换器自动应用。默认情况下,支持简单类型(int、long、Date等)。您可以通过WebDataBinder(参见DataBinder)或通过向FormattingConversionService注册Formatters来定制类型转换。参见Spring 字段格式化。
类型转换中的一个实际问题是对空字符串源值的处理。如果此类值经类型转换后变为null,则将其视为缺失。Long、UUID和其他目标类型可能出现这种情况。如果您希望允许注入null,请使用参数注解上的required标志,或将参数声明为@Nullable。
|
从 5.3 开始,即使在类型转换之后,也会强制执行非空参数。如果您的处理程序方法也打算接受空值,请将您的参数声明为 或者,您也可以专门处理,例如,必需的 |