Clear ProducesRequestCondition attribute

Closes gh-23091
This commit is contained in:
Rossen Stoyanchev
2019-06-11 13:55:20 -04:00
parent 859923b732
commit 0757eaee9d
4 changed files with 43 additions and 0 deletions

View File

@@ -326,6 +326,17 @@ public final class ProducesRequestCondition extends AbstractRequestCondition<Pro
}
/**
* Use this to clear {@link #MEDIA_TYPES_ATTRIBUTE} that contains the parsed,
* requested media types.
* @param request the current request
* @since 5.2
*/
public static void clearMediaTypesAttribute(HttpServletRequest request) {
request.removeAttribute(MEDIA_TYPES_ATTRIBUTE);
}
/**
* Parses and matches a single media type expression to a request's 'Accept' header.
*/

View File

@@ -48,6 +48,7 @@ import org.springframework.web.servlet.handler.RequestMatchResult;
import org.springframework.web.servlet.mvc.condition.AbstractRequestCondition;
import org.springframework.web.servlet.mvc.condition.CompositeRequestCondition;
import org.springframework.web.servlet.mvc.condition.ConsumesRequestCondition;
import org.springframework.web.servlet.mvc.condition.ProducesRequestCondition;
import org.springframework.web.servlet.mvc.condition.RequestCondition;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
@@ -441,4 +442,14 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
}
}
@Override
protected HandlerMethod getHandlerInternal(HttpServletRequest request) throws Exception {
try {
return super.getHandlerInternal(request);
}
finally {
ProducesRequestCondition.clearMediaTypesAttribute(request);
}
}
}