Skip to content

Commit ce25304

Browse files
committed
Merge branch '5.3.x'
2 parents 81af733 + c0f79ee commit ce25304

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,7 @@ protected void render(ModelAndView mv, HttpServletRequest request, HttpServletRe
13931393
}
13941394
try {
13951395
if (mv.getStatus() != null) {
1396+
request.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, mv.getStatus());
13961397
response.setStatus(mv.getStatus().value());
13971398
}
13981399
view.render(mv.getModelInternal(), request, response);

spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ServletAnnotationControllerHandlerMethodTests.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,6 +1896,18 @@ void modelAndViewWithStatus(boolean usePathPatterns) throws Exception {
18961896
assertThat(response.getForwardedUrl()).isEqualTo("view");
18971897
}
18981898

1899+
@PathPatternsParameterizedTest
1900+
void modelAndViewWithStatusForRedirect(boolean usePathPatterns) throws Exception {
1901+
initDispatcherServlet(ModelAndViewController.class, usePathPatterns);
1902+
1903+
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/redirect");
1904+
MockHttpServletResponse response = new MockHttpServletResponse();
1905+
getServlet().service(request, response);
1906+
1907+
assertThat(response.getStatus()).isEqualTo(307);
1908+
assertThat(response.getRedirectedUrl()).isEqualTo("/path");
1909+
}
1910+
18991911
@PathPatternsParameterizedTest // SPR-14796
19001912
void modelAndViewWithStatusInExceptionHandler(boolean usePathPatterns) throws Exception {
19011913
initDispatcherServlet(ModelAndViewController.class, usePathPatterns);
@@ -3884,6 +3896,11 @@ public ModelAndView methodWithHttpStatus(MyEntity object) {
38843896
return new ModelAndView("view", HttpStatus.UNPROCESSABLE_ENTITY);
38853897
}
38863898

3899+
@RequestMapping("/redirect")
3900+
public ModelAndView methodWithHttpStatusForRedirect(MyEntity object) {
3901+
return new ModelAndView("redirect:/path", HttpStatus.TEMPORARY_REDIRECT);
3902+
}
3903+
38873904
@RequestMapping("/exception")
38883905
public void raiseException() throws Exception {
38893906
throw new TestException();

0 commit comments

Comments
 (0)