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"); + } }