从 ChangeEvent 访问 GWT TextBox 中的文本

Accessing text in the GWT TextBox from ChangeEvent

我正在根据从 RPC 调用接收到的数据动态生成表单到 FormFieldData 对象,该对象包含有关要呈现的字段的详细信息,例如字段名称、预期长度和输入类型,如果该字段是在某些情况下是否为必填字段和有效输入正则表达式等

我希望能够根据上述属性对字段执行验证。 这是一个例子:

private void renderTextField(FormFieldData field){
    FormGroup formGroup = new FormGroup();
    FormLabel formLabel = new FormLabel();
    if(field.isRequired()){
        formLabel.setText(field.getName()+"*");
    }else{
        formLabel.setText(field.getName());
    }
    formGroup.add(formLabel);

    TextBox textBox = new TextBox();
    textBox.addChangeHandler(new ChangeHandler(){
        @Overrride
        public void onChange(ChangeEvent event){
            //TODO - find a way to get the text entered in TextBox
            // and perform validation on it
            //and set the TextBox Style to "Validation-error"
        }
    });
    formGroup.add(textBox);

    form.add(formGroup);
}

有类似的方法来呈现需要类似验证的下拉菜单、数字字段、单选按钮字段等。

问题是我无法在未声明的情况下从 onChange 方法中的 TextBox 访问文本 final,我不能这样做,因为我可能会呈现多个文本领域。我不太了解 ChangeEvent 以及是否有办法从中获取文本。

除了在提交表单时必须遍历字段及其相应的 FormFieldData 对象之外,我非常感谢任何指向在将数据输入表单时实时执行此操作的方法的指示。

首先,你可以使变量final,没问题。

如果您出于某种原因不想这样做,您可以从这样的事件中获取 TextBox

textBox.addValueChangeHandler(new ValueChangeHandler(){
    @Overrride
    public void onValueChange(ChangeEvent event){
        TextBox box = (TextBox) event.getSource();
        // Do whatever you need to here
    }
});

您可能也在寻找 ValueChangeHandler 而不是 ChangeHandler