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