我正在根据从 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 对象。