Fix issue with restoring included attributes

Before this change the DispatcherServlet restored modified and also
removed added attributes but did not restore removed attributes.

Issue: SPR-10360
master
Rossen Stoyanchev 12 years ago
parent e9f74450ad
commit 0fb4b747c2
  1. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

@ -1268,6 +1268,7 @@ public class DispatcherServlet extends FrameworkServlet {
* @param request current HTTP request * @param request current HTTP request
* @param attributesSnapshot the snapshot of the request attributes before the include * @param attributesSnapshot the snapshot of the request attributes before the include
*/ */
@SuppressWarnings("unchecked")
private void restoreAttributesAfterInclude(HttpServletRequest request, Map<?,?> attributesSnapshot) { private void restoreAttributesAfterInclude(HttpServletRequest request, Map<?,?> attributesSnapshot) {
logger.debug("Restoring snapshot of request attributes after include"); logger.debug("Restoring snapshot of request attributes after include");
@ -1282,6 +1283,9 @@ public class DispatcherServlet extends FrameworkServlet {
} }
} }
// Add attributes that may have been removed
attrsToCheck.addAll((Set<String>) attributesSnapshot.keySet());
// Iterate over the attributes to check, restoring the original value // Iterate over the attributes to check, restoring the original value
// or removing the attribute, respectively, if appropriate. // or removing the attribute, respectively, if appropriate.
for (String attrName : attrsToCheck) { for (String attrName : attrsToCheck) {

Loading…
Cancel
Save