Reorder date formatting converter in registrar#23893
Merged
bclozel merged 1 commit intospring-projects:masterfrom Oct 30, 2019
Merged
Reorder date formatting converter in registrar#23893bclozel merged 1 commit intospring-projects:masterfrom
bclozel merged 1 commit intospring-projects:masterfrom
Conversation
snicoll
approved these changes
Oct 30, 2019
sbrannen
approved these changes
Oct 30, 2019
Prior to this commit, the `DateFormatterRegistrar` would register the annotation-based formatter before the pattern-based formatter. This would create an issue when an application tries to convert a `String` to an annotated `@DateTimeFormat Date`: since the converters are considered in reversed order of registration in `GenericConversionServicei#ConvertersForPair`, the pattern-based variant would always be considered before the annotation-based variant, overriding the developer's opinion. This commit aligns the `DateFormatterRegistrar` with the `DateTimeFormatterRegistrar` and registers the annotation-based variant last. Closes spring-projectsgh-23893
c4ef78a to
4beb25b
Compare
pull bot
pushed a commit
to scope-demo/spring-framework
that referenced
this pull request
Oct 30, 2019
Prior to this commit, the `DateFormatterRegistrar` would register the annotation-based formatter before the pattern-based formatter. This would create an issue when an application tries to convert a `String` to an annotated `@DateTimeFormat Date`: since the converters are considered in reversed order of registration in `GenericConversionServicei#ConvertersForPair`, the pattern-based variant would always be considered before the annotation-based variant, overriding the developer's opinion. This commit aligns the `DateFormatterRegistrar` with the `DateTimeFormatterRegistrar` and registers the annotation-based variant last. Closes spring-projectsgh-23893
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is an attempt at fixing #23890
In that issue, a developer configures the
spring.mvc.date-formatapplication property in Spring Boot and sees that the@DateTimeFormatannotation is not honored anymore when binding to a controller method argument. This property is merely registering aDateFormatterRegistrarwith a specific pattern.It seems that the ordering of registration of formatters in that registrar is off and registers the annotation-based formatter before the pattern-based one. Because the formatters are considered in reversed order when multiple candidates match the same source/target type pairs, this needs to be reversed. This PR aligns this registration order in
DateFormatterRegistrarwith what's already done inDateTimeFormatterRegistrar.