類型轉換
預設情況下,會安裝各種數字和日期類型的格式器,並支援透過欄位和參數上的 @NumberFormat
、@DurationFormat
和 @DateTimeFormat
進行自訂。
若要註冊自訂格式器和轉換器,請使用下列項目
-
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 在剖析和格式化日期值時會考量請求地區設定。這適用於日期表示為具有 "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 實作的詳細資訊,請參閱 FormatterRegistrar SPI 和 FormattingConversionServiceFactoryBean 。 |