¿Cómo usar StatusChangeListener para la validación en Vaadin?

Estoy usando una carpeta para enlazar y validar a TextFieldy a ComboBox. Para recibir notificaciones de los cambios de validación, agrego un StatusChangeListener al cuaderno. El oyente verifica si .hasValidationErrors()devuelve falso. Sin embargo, después de elegir una entrada válida en el cuadro combinado, pero una entrada no válida en el campo de texto, devuelve falso. Por lo tanto, devuelve falso a pesar de que hay errores de validación. Vea a continuación un ejemplo mínimo.

public class TestWindow extends Window {

    private final Binder<State> binder;

    public TestWindow() {
        this.binder  = new Binder<>();

        ComboBox<String> comboBox = new ComboBox<>("comboBox", List.of("A", "B"));
        TextField textField = new TextField("textField");

        this.binder.forField(comboBox).bind(State::getComboBox, State::setComboBox);
        this.binder.forField(textField)
                .withValidator(string -> string.length() > 3, "tmp")
                .bind(State::getName, State::setName);
        this.binder.addStatusChangeListener( status -> System.err.println(status.hasValidationErrors()));

        setContent(new VerticalLayout(comboBox, textField));
    }


    private class State {
        private String name;
        private String comboBox;

        public State(String name, String comboBox) {
            this.name = name;
            this.comboBox = comboBox;
        }

        public String getComboBox() {
            return this.comboBox;
        }

        public void setComboBox(String comboBox) {
            this.comboBox = comboBox;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

Después de ingresar una cadena que es demasiado corta en el campo de texto y seleccionar algo en el cuadro combinado, esperaría trueque se imprima.

Respuesta 1

En el JLS en 5.6.2. Promoción numérica binaria: cuando un operador aplica la promoción numérica binaria a un par de operandos, cada uno de los cuales debe denotar un valor que es convertible a un tipo numérico, el ...

Tengo un controlador Spring 3 y tiene que hacer una solicitud HTTP [no una llamada de servicio web] a otro servidor que dará una respuesta JSON, el controlador debe analizar esta respuesta JSON y usarla en JSP. ...

¿Qué estoy haciendo mal aquí? Quiero multiplicar por elementos dos matrices dispersas usando Colt. Aquí hay un ejemplo de cómo intento hacer esto: DoubleMatrix2D A = new SparseDoubleMatrix2D (2, 2); UN....

En mi proyecto Kotlin debo usar com.google.gson.JsonObject. val jsonRedir = JsonObject () someCustomMethod (jsonRedir) El problema es que el método someCustomMethod tiene un parámetro serializable. Pero ...