SPR-8819 Fix issue in setting best matching pattern.

This commit is contained in:
Rossen Stoyanchev
2011-11-08 20:00:42 +00:00
parent b9a3d4577a
commit c3f0f31243
2 changed files with 17 additions and 6 deletions

View File

@@ -85,10 +85,11 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
protected void handleMatch(RequestMappingInfo info, String lookupPath, HttpServletRequest request) {
super.handleMatch(info, lookupPath, request);
String pattern = info.getPatternsCondition().getPatterns().iterator().next();
request.setAttribute(BEST_MATCHING_PATTERN_ATTRIBUTE, pattern);
Set<String> patterns = info.getPatternsCondition().getPatterns();
String bestPattern = patterns.isEmpty() ? lookupPath : patterns.iterator().next();
request.setAttribute(BEST_MATCHING_PATTERN_ATTRIBUTE, bestPattern);
Map<String, String> uriTemplateVariables = getPathMatcher().extractUriTemplateVariables(pattern, lookupPath);
Map<String, String> uriTemplateVariables = getPathMatcher().extractUriTemplateVariables(bestPattern, lookupPath);
request.setAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, uriTemplateVariables);
if (!info.getProducesCondition().getProducibleMediaTypes().isEmpty()) {