Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix request parameter comparison bug in isFlashMapForRequest() method of AbstractFlashMapManager.java. #565

Closed
wants to merge 5 commits into from

Conversation

eujungkim
Copy link
Contributor

The isFlashMapForRequest() method of AbstractFlashMapManager.java returns true when targetRequestParams of FlashMap and parameters in HttpServletRequest are same.

The value of targetRequestParams in FlashMap is encoded by RedirectView class using URLEncoder.encode(String, String)

and the value of parameters in HttpServletRequest is not encoded (or decoded already).

This is not a problem in normal case, but can make problem if special character as like white space is included in parameter.

example)
Controller's logic is follows :
redirectAttributes.addAttribute("ab", "a b");
redirectAttributes.addFlashAttribute("flashKey", "flashValue");

See the comparison logic of isFlashMapForRequest() method in AbstractFlashMapManager.java :

flashMap.getTargetRequestParams().get("ab") is "a+b"
request.getParameterValues("ab") is "a b".

So isFlashMapForRequest() method returns false.
And getMatchingFlashMap() method in in AbstractFlashMapManager.java returns null.
And retrieveAndUpdate() method in in AbstractFlashMapManager.java returns null, too.
And redirected Controller cannot get FlashMap.

So I change isFlashMapForRequest() method to decode the value of targetRequestParams in FlashMap
and add private decoding method.

in AbstractFlashMapManager.java, 
and modify isFlashMapForRequest(FlashMap flashMap, HttpServletRequest
request) method in AbstractFlashMapManager.java 
to decode targetRequestParams in FlashMap.
FlashMapManagerTests.java for SPR-11821
@eujungkim
Copy link
Contributor Author

I have signed and agree to the terms of the SpringSource Individual Contributor License Agreement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant