Ensure RedirectModel is initialized
This commit fixes an old bug in ModelAndViewContainer where getModel returns a new ModelMap instance that isn't saved and re-used. Issue: SPR-14045
This commit is contained in:
parent
971ccab038
commit
582864802e
|
@ -134,7 +134,10 @@ public class ModelAndViewContainer {
|
|||
return this.defaultModel;
|
||||
}
|
||||
else {
|
||||
return (this.redirectModel != null) ? this.redirectModel : new ModelMap();
|
||||
if (this.redirectModel == null) {
|
||||
this.redirectModel = new ModelMap();
|
||||
}
|
||||
return this.redirectModel;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -76,4 +76,15 @@ public class ModelAndViewContainerTests {
|
|||
assertTrue(this.mavContainer.getModel().isEmpty());
|
||||
}
|
||||
|
||||
@Test // SPR-14045
|
||||
public void ignoreDefaultModelAndWithoutRedirectModel() {
|
||||
this.mavContainer.setIgnoreDefaultModelOnRedirect(true);
|
||||
this.mavContainer.setRedirectModelScenario(true);
|
||||
this.mavContainer.addAttribute("name", "value");
|
||||
|
||||
assertEquals(1, this.mavContainer.getModel().size());
|
||||
assertEquals("value", this.mavContainer.getModel().get("name"));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -143,6 +143,20 @@ public class ModelAndViewMethodReturnValueHandlerTests {
|
|||
assertNotSame("RedirectAttributes should not be used if controller doesn't redirect", redirectAttributes, model);
|
||||
}
|
||||
|
||||
@Test // SPR-14045
|
||||
public void handleRedirectWithIgnoreDefaultModel() throws Exception {
|
||||
mavContainer.setIgnoreDefaultModelOnRedirect(true);
|
||||
|
||||
RedirectView redirectView = new RedirectView();
|
||||
ModelAndView mav = new ModelAndView(redirectView, "name", "value");
|
||||
handler.handleReturnValue(mav, returnParamModelAndView, mavContainer, webRequest);
|
||||
|
||||
ModelMap model = mavContainer.getModel();
|
||||
assertSame(redirectView, mavContainer.getView());
|
||||
assertEquals(1, model.size());
|
||||
assertEquals("value", model.get("name"));
|
||||
}
|
||||
|
||||
|
||||
private MethodParameter getReturnValueParam(String methodName) throws Exception {
|
||||
Method method = getClass().getDeclaredMethod(methodName);
|
||||
|
|
Loading…
Reference in New Issue