Move status/header handling into FragmentsRendering

Based on feedback from htmx-spring-boot. It's more generally useful
to process those from within DefaultFragmentsRendering rather than
in ModelAndViewMethodReturnValueHandler. That way a custom
return value handler can create a FragmentsRendering as well and
get the same result.

See gh-33194
This commit is contained in:
rstoyanchev
2024-08-09 17:59:50 +03:00
parent ce5e247c3b
commit 0d64c90a79
4 changed files with 11 additions and 16 deletions

View File

@@ -91,13 +91,10 @@ class ModelAndViewMethodReturnValueHandlerTests {
@Test
void handleFragmentsRendering() throws Exception {
FragmentsRendering rendering = FragmentsRendering.with("viewName")
.header("headerName", "headerValue")
.build();
FragmentsRendering rendering = FragmentsRendering.with("viewName").build();
handler.handleReturnValue(rendering, returnParamModelAndView, mavContainer, webRequest);
assertThat(mavContainer.getView()).isInstanceOf(SmartView.class);
assertThat(this.webRequest.getResponse().getHeader("headerName")).isEqualTo("headerValue");
}
@Test

View File

@@ -43,7 +43,6 @@ import static org.junit.jupiter.api.condition.JRE.JAVA_21;
@DisabledForJreRange(min = JAVA_21, disabledReason = "Kotlin doesn't support Java 21+ yet")
public class DefaultFragmentsRenderingTests {
@Test
void render() throws Exception {
@@ -59,11 +58,13 @@ public class DefaultFragmentsRenderingTests {
FragmentsRendering view = FragmentsRendering.with("fragment1", Map.of("foo", "Foo"))
.fragment("fragment2", Map.of("bar", "Bar"))
.header("headerName", "headerValue")
.build();
view.resolveNestedViews(viewResolver, Locale.ENGLISH);
view.render(Collections.emptyMap(), request, response);
assertThat(response.getHeader("headerName")).isEqualTo("headerValue");
assertThat(response.getContentAsString()).isEqualTo("""
<p>
Hello Foo