Skip to content

Commit 9c98369

Browse files
committed
fix: override all methods when patching data generator
1 parent d6e427b commit 9c98369

File tree

1 file changed

+25
-4
lines changed
  • vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid

1 file changed

+25
-4
lines changed

vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid/Grid.java

+25-4
Original file line numberDiff line numberDiff line change
@@ -496,10 +496,31 @@ public Column(Grid<T> grid, String columnId, Renderer<T> renderer) {
496496

497497
if (dataGenerator.isPresent()) {
498498
var generator = dataGenerator.get();
499-
DataGenerator<T> conditionalDataGenerator = (item,
500-
jsonObject) -> {
501-
if (Column.this.isVisible()) {
502-
generator.generateData(item, jsonObject);
499+
500+
// Use an anonymous class instead of Lambda to prevent potential
501+
// deserialization issues when used with Grid
502+
// see https://github.com/vaadin/flow-components/issues/6256
503+
var conditionalDataGenerator = new DataGenerator<T>() {
504+
@Override
505+
public void generateData(T item, JsonObject jsonObject) {
506+
if (Column.this.isVisible()) {
507+
generator.generateData(item, jsonObject);
508+
}
509+
}
510+
511+
@Override
512+
public void destroyData(T item) {
513+
generator.destroyData(item);
514+
}
515+
516+
@Override
517+
public void destroyAllData() {
518+
generator.destroyAllData();
519+
}
520+
521+
@Override
522+
public void refreshData(T item) {
523+
generator.refreshData(item);
503524
}
504525
};
505526
columnDataGeneratorRegistration = grid

0 commit comments

Comments
 (0)