Only respect RequestMappingInfos that have a pattern match in handleNoMatch

master
Arjen Poutsma 14 years ago
parent ad2e0d4587
commit b0a4be7cd1
  1. 4
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java

@ -193,6 +193,8 @@ public class RequestMappingHandlerMapping extends AbstractHandlerMethodMapping<R
Set<MediaType> consumableMediaTypes = new HashSet<MediaType>(); Set<MediaType> consumableMediaTypes = new HashSet<MediaType>();
Set<MediaType> producibleMediaTypes = new HashSet<MediaType>(); Set<MediaType> producibleMediaTypes = new HashSet<MediaType>();
for (RequestMappingInfo info : requestMappingInfos) { for (RequestMappingInfo info : requestMappingInfos) {
for (String pattern : info.getPatterns()) {
if (pathMatcher.match(pattern, lookupPath)) {
if (!info.getMethods().match(request)) { if (!info.getMethods().match(request)) {
for (RequestMethod method : info.getMethods().getMethods()) { for (RequestMethod method : info.getMethods().getMethods()) {
allowedMethods.add(method.name()); allowedMethods.add(method.name());
@ -205,6 +207,8 @@ public class RequestMappingHandlerMapping extends AbstractHandlerMethodMapping<R
producibleMediaTypes.addAll(info.getProduces().getMediaTypes()); producibleMediaTypes.addAll(info.getProduces().getMediaTypes());
} }
} }
}
}
if (!allowedMethods.isEmpty()) { if (!allowedMethods.isEmpty()) {
throw new HttpRequestMethodNotSupportedException(request.getMethod(), allowedMethods); throw new HttpRequestMethodNotSupportedException(request.getMethod(), allowedMethods);
} }

Loading…
Cancel
Save