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
This commit is contained in:
Rossen Stoyanchev 2013-03-11 10:32:15 -04:00
parent e9f74450ad
commit 0fb4b747c2
1 changed files with 4 additions and 0 deletions

View File

@ -1268,6 +1268,7 @@ public class DispatcherServlet extends FrameworkServlet {
* @param request current HTTP request
* @param attributesSnapshot the snapshot of the request attributes before the include
*/
@SuppressWarnings("unchecked")
private void restoreAttributesAfterInclude(HttpServletRequest request, Map<?,?> attributesSnapshot) {
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
// or removing the attribute, respectively, if appropriate.
for (String attrName : attrsToCheck) {