Use code includes and tabs in date/time format documentation
See gh-22171
This commit is contained in:
parent
13df59cef4
commit
5c8043dcea
|
|
@ -11,106 +11,9 @@ formatters manually with the help of:
|
||||||
* `org.springframework.format.datetime.standard.DateTimeFormatterRegistrar`
|
* `org.springframework.format.datetime.standard.DateTimeFormatterRegistrar`
|
||||||
* `org.springframework.format.datetime.DateFormatterRegistrar`
|
* `org.springframework.format.datetime.DateFormatterRegistrar`
|
||||||
|
|
||||||
For example, the following Java configuration registers a global `yyyyMMdd` format:
|
For example, the following configuration registers a global `yyyyMMdd` format:
|
||||||
|
|
||||||
[tabs]
|
include-code::./ApplicationConfiguration[tag=snippet,indent=0]
|
||||||
======
|
|
||||||
Java::
|
|
||||||
+
|
|
||||||
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
|
|
||||||
----
|
|
||||||
@Configuration
|
|
||||||
public class AppConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public FormattingConversionService conversionService() {
|
|
||||||
|
|
||||||
// Use the DefaultFormattingConversionService but do not register defaults
|
|
||||||
DefaultFormattingConversionService conversionService =
|
|
||||||
new DefaultFormattingConversionService(false);
|
|
||||||
|
|
||||||
// Ensure @NumberFormat is still supported
|
|
||||||
conversionService.addFormatterForFieldAnnotation(
|
|
||||||
new NumberFormatAnnotationFormatterFactory());
|
|
||||||
|
|
||||||
// Register JSR-310 date conversion with a specific global format
|
|
||||||
DateTimeFormatterRegistrar dateTimeRegistrar = new DateTimeFormatterRegistrar();
|
|
||||||
dateTimeRegistrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
||||||
dateTimeRegistrar.registerFormatters(conversionService);
|
|
||||||
|
|
||||||
// Register date conversion with a specific global format
|
|
||||||
DateFormatterRegistrar dateRegistrar = new DateFormatterRegistrar();
|
|
||||||
dateRegistrar.setFormatter(new DateFormatter("yyyyMMdd"));
|
|
||||||
dateRegistrar.registerFormatters(conversionService);
|
|
||||||
|
|
||||||
return conversionService;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
|
|
||||||
Kotlin::
|
|
||||||
+
|
|
||||||
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
|
|
||||||
----
|
|
||||||
@Configuration
|
|
||||||
class AppConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
fun conversionService(): FormattingConversionService {
|
|
||||||
// Use the DefaultFormattingConversionService but do not register defaults
|
|
||||||
return DefaultFormattingConversionService(false).apply {
|
|
||||||
|
|
||||||
// Ensure @NumberFormat is still supported
|
|
||||||
addFormatterForFieldAnnotation(NumberFormatAnnotationFormatterFactory())
|
|
||||||
|
|
||||||
// Register JSR-310 date conversion with a specific global format
|
|
||||||
val dateTimeRegistrar = DateTimeFormatterRegistrar()
|
|
||||||
dateTimeRegistrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyyMMdd"))
|
|
||||||
dateTimeRegistrar.registerFormatters(this)
|
|
||||||
|
|
||||||
// Register date conversion with a specific global format
|
|
||||||
val dateRegistrar = DateFormatterRegistrar()
|
|
||||||
dateRegistrar.setFormatter(DateFormatter("yyyyMMdd"))
|
|
||||||
dateRegistrar.registerFormatters(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
----
|
|
||||||
======
|
|
||||||
|
|
||||||
If you prefer XML-based configuration, you can use a
|
|
||||||
`FormattingConversionServiceFactoryBean`. The following example shows how to do so:
|
|
||||||
|
|
||||||
[source,xml,indent=0,subs="verbatim,quotes"]
|
|
||||||
----
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="
|
|
||||||
http://www.springframework.org/schema/beans
|
|
||||||
https://www.springframework.org/schema/beans/spring-beans.xsd">
|
|
||||||
|
|
||||||
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
|
|
||||||
<property name="registerDefaultFormatters" value="false" />
|
|
||||||
<property name="formatters">
|
|
||||||
<set>
|
|
||||||
<bean class="org.springframework.format.number.NumberFormatAnnotationFormatterFactory" />
|
|
||||||
</set>
|
|
||||||
</property>
|
|
||||||
<property name="formatterRegistrars">
|
|
||||||
<set>
|
|
||||||
<bean class="org.springframework.format.datetime.standard.DateTimeFormatterRegistrar">
|
|
||||||
<property name="dateFormatter">
|
|
||||||
<bean class="org.springframework.format.datetime.standard.DateTimeFormatterFactoryBean">
|
|
||||||
<property name="pattern" value="yyyyMMdd"/>
|
|
||||||
</bean>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
</set>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
</beans>
|
|
||||||
----
|
|
||||||
|
|
||||||
Note there are extra considerations when configuring date and time formats in web
|
Note there are extra considerations when configuring date and time formats in web
|
||||||
applications. Please see
|
applications. Please see
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2002-2023 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.docs.core.validation.formatconfiguringformattingglobaldatetimeformat;
|
||||||
|
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.format.datetime.DateFormatter;
|
||||||
|
import org.springframework.format.datetime.DateFormatterRegistrar;
|
||||||
|
import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar;
|
||||||
|
import org.springframework.format.number.NumberFormatAnnotationFormatterFactory;
|
||||||
|
import org.springframework.format.support.DefaultFormattingConversionService;
|
||||||
|
import org.springframework.format.support.FormattingConversionService;
|
||||||
|
|
||||||
|
// tag::snippet[]
|
||||||
|
@Configuration
|
||||||
|
public class ApplicationConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public FormattingConversionService conversionService() {
|
||||||
|
|
||||||
|
// Use the DefaultFormattingConversionService but do not register defaults
|
||||||
|
DefaultFormattingConversionService conversionService =
|
||||||
|
new DefaultFormattingConversionService(false);
|
||||||
|
|
||||||
|
// Ensure @NumberFormat is still supported
|
||||||
|
conversionService.addFormatterForFieldAnnotation(
|
||||||
|
new NumberFormatAnnotationFormatterFactory());
|
||||||
|
|
||||||
|
// Register JSR-310 date conversion with a specific global format
|
||||||
|
DateTimeFormatterRegistrar dateTimeRegistrar = new DateTimeFormatterRegistrar();
|
||||||
|
dateTimeRegistrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||||
|
dateTimeRegistrar.registerFormatters(conversionService);
|
||||||
|
|
||||||
|
// Register date conversion with a specific global format
|
||||||
|
DateFormatterRegistrar dateRegistrar = new DateFormatterRegistrar();
|
||||||
|
dateRegistrar.setFormatter(new DateFormatter("yyyyMMdd"));
|
||||||
|
dateRegistrar.registerFormatters(conversionService);
|
||||||
|
|
||||||
|
return conversionService;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::snippet[]
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2002-2023 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.docs.core.validation.formatconfiguringformattingglobaldatetimeformat
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.format.datetime.DateFormatter
|
||||||
|
import org.springframework.format.datetime.DateFormatterRegistrar
|
||||||
|
import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar
|
||||||
|
import org.springframework.format.number.NumberFormatAnnotationFormatterFactory
|
||||||
|
import org.springframework.format.support.DefaultFormattingConversionService
|
||||||
|
import org.springframework.format.support.FormattingConversionService
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
// tag::snippet[]
|
||||||
|
@Configuration
|
||||||
|
class ApplicationConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
fun conversionService(): FormattingConversionService {
|
||||||
|
// Use the DefaultFormattingConversionService but do not register defaults
|
||||||
|
return DefaultFormattingConversionService(false).apply {
|
||||||
|
|
||||||
|
// Ensure @NumberFormat is still supported
|
||||||
|
addFormatterForFieldAnnotation(NumberFormatAnnotationFormatterFactory())
|
||||||
|
|
||||||
|
// Register JSR-310 date conversion with a specific global format
|
||||||
|
val dateTimeRegistrar = DateTimeFormatterRegistrar()
|
||||||
|
dateTimeRegistrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyyMMdd"))
|
||||||
|
dateTimeRegistrar.registerFormatters(this)
|
||||||
|
|
||||||
|
// Register date conversion with a specific global format
|
||||||
|
val dateRegistrar = DateFormatterRegistrar()
|
||||||
|
dateRegistrar.setFormatter(DateFormatter("yyyyMMdd"))
|
||||||
|
dateRegistrar.registerFormatters(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::snippet[]
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="
|
||||||
|
http://www.springframework.org/schema/beans
|
||||||
|
https://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||||
|
|
||||||
|
<!-- tag::snippet[] -->
|
||||||
|
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
|
||||||
|
<property name="registerDefaultFormatters" value="false" />
|
||||||
|
<property name="formatters">
|
||||||
|
<set>
|
||||||
|
<bean class="org.springframework.format.number.NumberFormatAnnotationFormatterFactory" />
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
<property name="formatterRegistrars">
|
||||||
|
<set>
|
||||||
|
<bean class="org.springframework.format.datetime.standard.DateTimeFormatterRegistrar">
|
||||||
|
<property name="dateFormatter">
|
||||||
|
<bean class="org.springframework.format.datetime.standard.DateTimeFormatterFactoryBean">
|
||||||
|
<property name="pattern" value="yyyyMMdd"/>
|
||||||
|
</bean>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
</set>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
<!-- end::snippet[] -->
|
||||||
|
</beans>
|
||||||
Loading…
Reference in New Issue