diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java index a83a40d618e..664d6a851dc 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java @@ -1040,11 +1040,6 @@ public abstract class RequestPredicates { return this.request.multipartData(); } - @Override - public String pathVariable(String name) { - return this.request.pathVariable(name); - } - @Override @SuppressWarnings("unchecked") public Map pathVariables() { diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/RouterFunctionsTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/RouterFunctionsTests.java index f46a3770448..787e2e70992 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/function/RouterFunctionsTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/function/RouterFunctionsTests.java @@ -22,6 +22,7 @@ import java.util.Optional; import org.junit.jupiter.api.Test; import org.springframework.web.servlet.handler.PathPatternsTestUtils; +import org.springframework.web.testfixture.servlet.MockHttpServletRequest; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; @@ -97,4 +98,20 @@ public class RouterFunctionsTests { assertThat(resultHandlerFunction.isPresent()).isFalse(); } + @Test + public void nestPathVariable() { + HandlerFunction handlerFunction = request -> ServerResponse.ok().build(); + RequestPredicate requestPredicate = request -> request.pathVariable("foo").equals("bar"); + RouterFunction nestedFunction = RouterFunctions.route(requestPredicate, handlerFunction); + + RouterFunction result = RouterFunctions.nest(RequestPredicates.path("/{foo}"), nestedFunction); + assertThat(result).isNotNull(); + + MockHttpServletRequest servletRequest = new MockHttpServletRequest("GET", "/bar"); + ServerRequest request = new DefaultServerRequest(servletRequest, Collections.emptyList()); + Optional> resultHandlerFunction = result.route(request); + assertThat(resultHandlerFunction.isPresent()).isTrue(); + assertThat(resultHandlerFunction.get()).isEqualTo(handlerFunction); + } + }