Decode target parameters prior to saving a FlashMap

The target parameters for a FlashMap must be decoded to be able to
match them to the parameters of incoming requests given that the
HttpServletRequest returns decoded request parameters.

SPR-9657
This commit is contained in:
Rossen Stoyanchev
2012-08-21 15:27:21 -04:00
parent af1561634c
commit 364bb696e0
3 changed files with 61 additions and 27 deletions

View File

@@ -264,6 +264,21 @@ public class AbstractFlashMapManagerTests {
assertEquals("/once/only", flashMap.getTargetRequestPath());
}
@Test
public void saveOutputFlashMapDecodeParameters() throws Exception {
this.request.setCharacterEncoding("UTF-8");
FlashMap flashMap = new FlashMap();
flashMap.put("anyKey", "anyValue");
flashMap.addTargetRequestParam("key", "%D0%90%D0%90");
flashMap.addTargetRequestParam("key", "%D0%91%D0%91");
flashMap.addTargetRequestParam("key", "%D0%92%D0%92");
this.flashMapManager.saveOutputFlashMap(flashMap, this.request, this.response);
assertEquals(Arrays.asList("АА", "ББ", "ВВ"), flashMap.getTargetRequestParams().get("key"));
}
private static class TestFlashMapManager extends AbstractFlashMapManager {