Support lazy initialization of BindingResult when customize a MessageCodesResolver

Issue: SPR-15009
This commit is contained in:
Kazuki Shimizu
2016-12-14 00:50:25 +09:00
parent 5169c51a6c
commit 9f229283fb
2 changed files with 85 additions and 1 deletions

View File

@@ -150,6 +150,8 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
private ConversionService conversionService;
private MessageCodesResolver messageCodesResolver;
/**
* Create a new DataBinder instance, with default object name.
@@ -253,6 +255,9 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
if (this.conversionService != null) {
result.initConversion(this.conversionService);
}
if (this.messageCodesResolver != null) {
result.setMessageCodesResolver(this.messageCodesResolver);
}
return result;
}
@@ -279,6 +284,9 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
if (this.conversionService != null) {
result.initConversion(this.conversionService);
}
if (this.messageCodesResolver != null) {
result.setMessageCodesResolver(this.messageCodesResolver);
}
return result;
}
@@ -486,7 +494,11 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
* @see DefaultMessageCodesResolver
*/
public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver) {
getInternalBindingResult().setMessageCodesResolver(messageCodesResolver);
Assert.state(this.messageCodesResolver == null, "DataBinder is already initialized with MessageCodesResolver");
this.messageCodesResolver = messageCodesResolver;
if (this.bindingResult != null && messageCodesResolver != null) {
this.bindingResult.setMessageCodesResolver(messageCodesResolver);
}
}
/**