Vaadin 24.3.5 Nested Grids (JAVA)

60 Views Asked by At

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");```
0

There are 0 best solutions below