From e6fef9555da4f887eb1cfa37428c97e6d2d430d2 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Thu, 14 Jun 2018 19:16:39 -0400 Subject: [PATCH] Check all HandlerMapping beans for named mappings Related to (but not required by) SPR-16336. --- .../method/annotation/MvcUriComponentsBuilder.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.java index a2ea58bf5a..eaa3085b62 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.java @@ -444,9 +444,15 @@ public class MvcUriComponentsBuilder { */ public static MethodArgumentBuilder fromMappingName(@Nullable UriComponentsBuilder builder, String name) { WebApplicationContext wac = getWebApplicationContext(); - Assert.notNull(wac, "Cannot lookup handler method mappings without WebApplicationContext"); - RequestMappingInfoHandlerMapping mapping = wac.getBean(RequestMappingInfoHandlerMapping.class); - List handlerMethods = mapping.getHandlerMethodsForMappingName(name); + Assert.notNull(wac, "No WebApplicationContext. "); + Map map = wac.getBeansOfType(RequestMappingInfoHandlerMapping.class); + List handlerMethods = null; + for (RequestMappingInfoHandlerMapping mapping : map.values()) { + handlerMethods = mapping.getHandlerMethodsForMappingName(name); + if (handlerMethods != null) { + break; + } + } if (handlerMethods == null) { throw new IllegalArgumentException("Mapping not found: " + name); }