From 15c16d2c3a8376929c5955ba89bf43ad5791f0f8 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Mon, 1 Dec 2025 11:17:40 +0000 Subject: [PATCH] FragmentsRendering exposes its fragments Closes gh-35775 --- .../web/servlet/view/DefaultFragmentsRendering.java | 9 ++++++++- .../web/servlet/view/FragmentsRendering.java | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/DefaultFragmentsRendering.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/DefaultFragmentsRendering.java index 99c97a4a205..9a09a382d44 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/DefaultFragmentsRendering.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/DefaultFragmentsRendering.java @@ -19,6 +19,7 @@ package org.springframework.web.servlet.view; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Locale; import java.util.Map; @@ -58,7 +59,7 @@ final class DefaultFragmentsRendering implements FragmentsRendering { this.status = status; this.headers = headers; - this.modelAndViews = new ArrayList<>(fragments); + this.modelAndViews = Collections.unmodifiableCollection(new ArrayList<>(fragments)); } @@ -77,6 +78,12 @@ final class DefaultFragmentsRendering implements FragmentsRendering { return false; } + @Override + public Collection fragments() { + return this.modelAndViews; + } + + @Override public void resolveNestedViews(ViewResolver resolver, Locale locale) throws Exception { for (ModelAndView mv : this.modelAndViews) { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/FragmentsRendering.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/FragmentsRendering.java index 046426f866b..e76f723e14b 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/FragmentsRendering.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/FragmentsRendering.java @@ -53,6 +53,12 @@ public interface FragmentsRendering extends SmartView { */ HttpHeaders headers(); + /** + * Return the {@code ModelAndView} for each fragment. + * @since 6.2.15 + */ + Collection fragments(); + /** * Create a builder with one HTML fragment, also inheriting attributes from