From c10a9bdcbef7abc0fde87f2e4768113f5b004a7f Mon Sep 17 00:00:00 2001 From: Samuel Gulliksson Date: Wed, 5 Nov 2025 07:58:40 +0100 Subject: [PATCH] Improve i18n-support for NoResourceFoundException. Return the requested resource as ErrorResponse.getDetailMessageArguments, making it usable with message customization and i18n. Signed-off-by: Samuel Gulliksson --- .../ROOT/pages/web/webmvc/mvc-ann-rest-exceptions.adoc | 2 +- .../web/servlet/resource/NoResourceFoundException.java | 4 ++++ .../web/servlet/resource/NoResourceFoundExceptionTests.java | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-rest-exceptions.adoc b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-rest-exceptions.adoc index ce39fbfca07e..a40cde4c2870 100644 --- a/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-rest-exceptions.adoc +++ b/framework-docs/modules/ROOT/pages/web/webmvc/mvc-ann-rest-exceptions.adoc @@ -171,7 +171,7 @@ Message codes and arguments for each error are also resolved via `MessageSource` | `NoResourceFoundException` | (default) -| +| `+{0}+` the resource | `TypeMismatchException` | (default) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/NoResourceFoundException.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/NoResourceFoundException.java index 593e33ef73ff..12c00161e20d 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/NoResourceFoundException.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/NoResourceFoundException.java @@ -78,4 +78,8 @@ public ProblemDetail getBody() { return this.body; } + @Override + public Object[] getDetailMessageArguments() { + return new String[]{this.resourcePath}; + } } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/NoResourceFoundExceptionTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/NoResourceFoundExceptionTests.java index 56cf687c1fa7..7d7950ad9a44 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/NoResourceFoundExceptionTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/NoResourceFoundExceptionTests.java @@ -40,4 +40,9 @@ void detailShouldContainResourcePath() { assertThat(noResourceFoundException.getBody().getDetail()).isEqualTo("No static resource /resource."); } + @Test + void messageArgumentsShouldContainResourcePath() { + var noResourceFoundException = new NoResourceFoundException(HttpMethod.GET, "/context/resource", "/resource"); + assertThat(noResourceFoundException.getDetailMessageArguments()).containsExactly("/resource"); + } }