javacheckboxvaadinvaadin8

Vaadin grid becomes empty, when using CheckboxRenderer


Vaadin version is 8.10.1

Adding the addon:

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>grid-renderers-collection-addon</artifactId>
        <version>2.7.0</version>
    </dependency>

and in the grid defining the renderer like that:

    CheckboxRenderer renderer = new CheckboxRenderer<>(Payment::setSelectedToMultiAction);
    paymentGrid.addColumn(Payment::getSelectedToMultiAction)
            .setRenderer(renderer)
            .setCaption("Selection");

But the grid shown empty. With no error in Chrome's js console:

enter image description here

If we remove the renderere, everything is displayed.

    CheckboxRenderer renderer = new CheckboxRenderer<>(Payment::setSelectedToMultiAction);
    paymentGrid.addColumn(Payment::getSelectedToMultiAction)
    //        .setRenderer(renderer)
            .setCaption("Selection");

The widget is handled during the vaadin-maven-plugin run:

<plugin>
                <groupId>com.vaadin</groupId>
                <artifactId>vaadin-maven-plugin</artifactId>
                <version>${vaadin.version}</version>
                <configuration>
                    <webappDirectory>${basedir}/resources/VAADIN/widgetsets</webappDirectory>
                    <hostedWebapp>${basedir}/resources/VAADIN/widgetsets</hostedWebapp>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--<goal>clean</goal>
                            <goal>resources</goal>-->
                            <goal>update-theme</goal>
                            <goal>update-widgetset</goal>
                            <goal>compile-theme</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Solution

  • I succeed with using ComponentRenderer from Vaadin 8.1, not the CheckboxRenderer from grid-renderers-collection-addon

       paymentGrid.addComponentColumn(payment -> {
            CheckBox multiselected = new CheckBox();
            multiselected.addValueChangeListener(event -> {
                payment.setSelectedToMultiAction(event.getValue());
                if (event.getValue()) {
                    selectedPayments.add(payment);
                } else {
                    selectedPayments.remove(payment);
                }
                showButtons();
            });
            return multiselected;
        });