2424import com .vaadin .flow .component .grid .Grid ;
2525import com .vaadin .flow .component .grid .Grid .Column ;
2626import com .vaadin .flow .component .grid .HeaderRow ;
27+ import com .vaadin .flow .component .grid .HeaderRow .HeaderCell ;
2728import com .vaadin .flow .component .grid .dataview .GridLazyDataView ;
2829import com .vaadin .flow .data .provider .AbstractBackEndDataProvider ;
2930import com .vaadin .flow .data .provider .DataCommunicator ;
@@ -103,16 +104,7 @@ private GridHeader<T> getGridHeader(Grid<T> grid, Column<T> column) {
103104 List <String > headerTexts = new ArrayList <>();
104105 List <HeaderRow > headerRows = grid .getHeaderRows ();
105106 for (HeaderRow headerRow : headerRows ) {
106- String headerText = renderHeaderCellTextContent (grid , column , (col ) -> {
107- String value = headerRow .getCell (col ).getText ();
108- if (Strings .isBlank (value )) {
109- Component component = headerRow .getCell (col ).getComponent ();
110- if (component != null ) {
111- value = component .getElement ().getTextRecursively ();
112- }
113- }
114- return value ;
115- });
107+ String headerText = renderHeaderCellTextContent (grid , headerRow , column );
116108 headerTexts .add (headerText );
117109 }
118110 return new GridHeader <>(headerTexts , column );
@@ -129,21 +121,33 @@ protected List<GridFooter<T>> getGridFooters(Grid<T> grid) {
129121 .collect (Collectors .toList ());
130122 }
131123
132- private String renderHeaderCellTextContent (Grid <T > grid , Column <T > column ,
133- SerializableFunction <Column <T >, String > obtainCellFunction ) {
124+ private String obtainCellFunction (HeaderCell headerCell , Column <T > column ) {
125+ String value = headerCell .getText ();
126+ if (Strings .isBlank (value )) {
127+ Component component = headerCell .getComponent ();
128+ if (component != null ) {
129+ value = component .getElement ().getTextRecursively ();
130+ }
131+ }
132+ return value ;
133+ }
134+
135+ private String renderHeaderCellTextContent (Grid <T > grid , HeaderRow headerRow , Column <T > column ) {
134136 String header = (String ) ComponentUtil .getData (column , GridExporter .COLUMN_HEADER );
137+
135138 if (Strings .isBlank (header )) {
136139 header = column .getHeaderText ();
137140
138141 if (Strings .isBlank (header )) {
139- try {
140- header = obtainCellFunction .apply (column );
141- } catch (RuntimeException e ) {
142- throw new IllegalStateException (
142+ try {
143+ HeaderCell headerCell = headerRow .getCell (column );
144+ header = obtainCellFunction (headerCell , column );
145+ } catch (RuntimeException e ) {
146+ throw new IllegalStateException (
143147 "Problem when trying to render header cell text content" , e );
144- }
145148 }
146149 }
150+ }
147151
148152 return header == null ? "" : header ;
149153 }
@@ -160,7 +164,7 @@ private String renderFooterCellTextContent(Grid<T> grid, Column<T> column) {
160164 Component component ;
161165 component = footerComponent .apply (column );
162166 if (component != null ) {
163- footer = component .getElement ().getTextRecursively ();
167+ footer = component .getElement ().getTextRecursively ();
164168 }
165169 } catch (RuntimeException e ) {
166170 throw new IllegalStateException (
0 commit comments