From 08e8408b45b58e738f9df21d326ca2fd240e2e86 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 5 Oct 2026 17:20:45 +0200 Subject: [PATCH] Align fallback implementation with AbstractMessageSource Closes gh-37383 --- .../context/support/DelegatingMessageSource.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/support/DelegatingMessageSource.java b/spring-context/src/main/java/org/springframework/context/support/DelegatingMessageSource.java index 19ae89b264a..e116b62ae5d 100644 --- a/spring-context/src/main/java/org/springframework/context/support/DelegatingMessageSource.java +++ b/spring-context/src/main/java/org/springframework/context/support/DelegatingMessageSource.java @@ -86,8 +86,15 @@ public class DelegatingMessageSource extends MessageSourceSupport implements Hie return this.parentMessageSource.getMessage(resolvable, locale); } else { - if (resolvable.getDefaultMessage() != null) { - return renderDefaultMessage(resolvable.getDefaultMessage(), resolvable.getArguments(), locale); + String defaultMessage = resolvable.getDefaultMessage(); + if (defaultMessage != null) { + if (resolvable instanceof DefaultMessageSourceResolvable defaultMessageSourceResolvable && + !defaultMessageSourceResolvable.shouldRenderDefaultMessage()) { + // Given default message does not contain any argument placeholders + // (and isn't escaped for alwaysUseMessageFormat either) -> return as-is. + return defaultMessage; + } + return renderDefaultMessage(defaultMessage, resolvable.getArguments(), locale); } String[] codes = resolvable.getCodes(); String code = (codes != null && codes.length > 0 ? codes[0] : "");