|
此版本仍在开发中,尚未被视为稳定版。如需最新稳定版本,请使用 Spring Framework 7.0.6! |
类型转换
默认情况下,系统会安装各种数字和日期类型的格式化器,并支持通过在字段和参数上使用 @NumberFormat、@DurationFormat 和 @DateTimeFormat 注解进行自定义。
要注册自定义的格式化器(formatters)和转换器(converters),请使用以下方式:
-
Java
-
Kotlin
-
Xml
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
// ...
}
}
@Configuration
class WebConfiguration : WebMvcConfigurer {
override fun addFormatters(registry: FormatterRegistry) {
// ...
}
}
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="org.example.MyConverter"/>
</set>
</property>
<property name="formatters">
<set>
<bean class="org.example.MyFormatter"/>
<bean class="org.example.MyAnnotationFormatterFactory"/>
</set>
</property>
<property name="formatterRegistrars">
<set>
<bean class="org.example.MyFormatterRegistrar"/>
</set>
</property>
</bean>
默认情况下,Spring MVC 在解析和格式化日期值时会考虑请求的区域设置(Locale)。这适用于表单中使用 "input" 类型字段以字符串形式表示日期的情况。然而,对于 "date" 和 "time" 类型的表单字段,浏览器会使用 HTML 规范中定义的固定格式。对于这类情况,日期和时间的格式化可以按如下方式进行自定义:
-
Java
-
Kotlin
@Configuration
public class DateTimeWebConfiguration implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setUseIsoFormat(true);
registrar.registerFormatters(registry);
}
}
@Configuration
class DateTimeWebConfiguration : WebMvcConfigurer {
override fun addFormatters(registry: FormatterRegistry) {
DateTimeFormatterRegistrar().apply {
setUseIsoFormat(true)
registerFormatters(registry)
}
}
}
请参阅 《FormatterRegistrar SPI》
以及 FormattingConversionServiceFactoryBean,以获取更多关于何时使用 FormatterRegistrar 实现的信息。 |