Browse Source

Set status code on DefaultRenderingBuilder for RedirectView

See gh-33498
pull/33720/head
yfoelsin 2 years ago committed by rstoyanchev
parent
commit
7655329463
  1. 3
      spring-webflux/src/main/java/org/springframework/web/reactive/result/view/DefaultRenderingBuilder.java
  2. 9
      spring-webflux/src/test/java/org/springframework/web/reactive/result/view/DefaultRenderingBuilderTests.java

3
spring-webflux/src/main/java/org/springframework/web/reactive/result/view/DefaultRenderingBuilder.java

@ -85,6 +85,9 @@ class DefaultRenderingBuilder implements Rendering.RedirectBuilder {
@Override @Override
public DefaultRenderingBuilder status(HttpStatusCode status) { public DefaultRenderingBuilder status(HttpStatusCode status) {
this.status = status; this.status = status;
if (this.view instanceof RedirectView) {
((RedirectView) this.view).setStatusCode(status);
}
return this; return this;
} }

9
spring-webflux/src/test/java/org/springframework/web/reactive/result/view/DefaultRenderingBuilderTests.java

@ -126,6 +126,15 @@ class DefaultRenderingBuilderTests {
assertThat(((RedirectView) view).isPropagateQuery()).isTrue(); assertThat(((RedirectView) view).isPropagateQuery()).isTrue();
} }
@Test
void redirectWithCustomStatus() {
Rendering rendering = Rendering.redirectTo("foo").status(HttpStatus.MOVED_PERMANENTLY).build();
Object view = rendering.view();
assertThat(view.getClass()).isEqualTo(RedirectView.class);
assertThat(((RedirectView) view).statusCode()).isEqualTo(HttpStatus.MOVED_PERMANENTLY);
}
private static class Foo {} private static class Foo {}

Loading…
Cancel
Save