I'm using vaadin 24.3.5
and i would implement nested grids but i cannot understand why it's not working. I see just empty columns with only labels. if i remove the nested grid in the second column, it works
in Poor words... grid has a column that contains reasonCodeGrid
I see just two empty lines with title but no content
here is the code snippet
Grid < Object > grid = new Grid < > (Object.class, false);
grid.setId("moduleConfiguration");
grid.setSizeFull();
grid.setItems(brand.getModuleConfigurationList());
grid.setAllRowsVisible(true);
grid.addComponentColumn(configurationInstance -> {
try {
Binder < Object > moduleConfigurationBinder = new BeanValidationBinder < Object > (Object.class);
bindings.put(moduleConfigurationBinder, configurationInstance);
moduleConfigurationBinder.setBean(configurationInstance);
ComboBox < String > comboBox = new ComboBox < > ();
comboBox.setItems(Arrays.asList("customerServiceAssociate", "gnagno", "pino"));
comboBox.setItemLabelGenerator(Objects::toString);
Object finalObject = configurationInstance;
moduleConfigurationBinder.forField(comboBox).bind(ReflectionHelper.getFunctionalGetter(eReturnClass, finalObject, "userType"), ReflectionHelper.getFunctionalSetter(eReturnClass, finalObject, "userType"));
return comboBox;
} catch (Exception e) {
throw new RuntimeException(e);
}
}).setHeader("User Type");
grid.addComponentColumn(returnReasonInstance -> {
try {
Grid < Object > reasonCodeGrid = new Grid < > (Object.class, false);
reasonCodeGrid.setId("reasonCodeGrid");
reasonCodeGrid.setItems(ReflectionHelper.getGetter(returnReasonInstance, "returnReason").invoke(returnReasonInstance));
reasonCodeGrid.setAllRowsVisible(true);
Binder < Object > returnReasonInstanceBinder = new BeanValidationBinder < Object > (Object.class); returnReasonInstanceBinder.setBean(ReflectionHelper.getGetter(returnReasonInstance, "returnReason").invoke(returnReasonInstance));
bindings.put(returnReasonInstanceBinder, ReflectionHelper.getGetter(returnReasonInstance, "returnReason").invoke(returnReasonInstance));
reasonCodeGrid.addComponentColumn(instance -> {
ComboBox < String > returnTypeComboBox = new ComboBox < > ();
returnTypeComboBox.setItems(Arrays.asList("Persona1", "customer", "Persona3"));
returnTypeComboBox.setItemLabelGenerator(Objects::toString);
add(returnTypeComboBox);
returnReasonInstanceBinder.forField(returnTypeComboBox).bind(ReflectionHelper.getFunctionalGetter(instance, "returnType"), ReflectionHelper.getFunctionalSetter(instance, "returnType"));
return returnTypeComboBox;
}).setHeader("Return Type");
return reasonCodeGrid;
} catch (Exception e) {
throw new RuntimeException(e);
}
}).setHeader("Return Configuration");```