79792976

Date: 2025-10-17 10:22:41
Score: 0.5
Natty:
Report link

@TatuLund answer is correct.

I just want to add a working example:

@Route("validate-example")
@PageTitle("Single Field Validation Example")
public class SingleFieldValidationView extends VerticalLayout {

    private final Binder<FormData> binder = new Binder<>(FormData.class);
    private Binder.Binding<FormData, Double> bindingQtaTot;

    private final NumberField totQntField = new NumberField("Quantità totale");
    private final Button btnCalcola = new Button("Calcola");

    public SingleFieldValidationView() {
        configureBinder();
        configureButton();

        add(totQntField, btnCalcola);
        setPadding(true);
        setSpacing(true);
    }

    @Data
    private static class FormData {
        private String descrizione;
        private LocalDate dataCreazione;
        private Double quantitaTotale;
    }

    private void configureBinder() {
        FormData formData = new FormData();
        binder.setBean(formData);

        // Keep the binding reference to validate later
        bindingQtaTot = binder.forField(totQntField)
                .asRequired("La quantità è obbligatoria!")
                .withValidator(q -> q != null && q > 0, "La quantità deve essere maggiore di zero")
                .bind(FormData::getQuantitaTotale, FormData::setQuantitaTotale);
    }

    private void configureButton() {
        btnCalcola.addClickListener(event -> {
            log("Validazione quantità...");

            BindingValidationStatus<Double> validationStatus = bindingQtaTot.validate();
            if (validationStatus.isError()) {
                String msg = validationStatus.getMessage().orElse("Errore di validazione");
                Notification.show(msg, 3000, Notification.Position.MIDDLE);
                log("Errore di validazione campo quantità: " + msg);
            } else {
                Double value = totQntField.getValue();
                Notification.show("Quantità valida: " + value, 2000, Notification.Position.MIDDLE);
                log("Quantità valida: " + value);
            }
        });
    }

    private void log(String msg) {
        System.out.println("[SingleFieldValidationView] " + msg);
    }
}
Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @TatuLund
  • Low reputation (1):
Posted by: MRTuCc