【问题标题】:How to validate a TextField in a Vaadin 8 Form如何验证 Vaadin 8 表单中的 TextField
【发布时间】:2017-08-25 07:49:52
【问题描述】:

我有一个要迁移到 vaadin 8 的系统。我想请求有关如何根据正则表达式验证 TextField 的帮助。我有适用于 Vaadin 7 但不适用于 Vaadin 8 的代码,这可以进一步解释我的要求。如下所示的代码示例将不胜感激。

TextField txtFirstname = new TextField(); 
txtFirstname.setInputPrompt("Enter the firstname e.g. John or Jane");
txtFirstname.addValidator(new RegexpValidator("^[a-zA-Z _\\-'\" ]{3,25}$", "Invalid FirstName"));
txtFirstname.addBlurListener(new BlurListener() {           
    @Override 
    public void blur(BlurEvent event) { 
        //txtFirstname.validate(); 
        if(txtFirstname.isValid()==false) 
        { 
            txtFirstname.setValidationVisible(true); 
            //txtFirstname.focus(); 
        } 
        else if(txtFirstname.isValid()==true)
            { 
                    txtFirstname.setValidationVisible(false); 
            } 
        } 
    }); 

【问题讨论】:

  • 您可以提供详细信息,您有错误吗?警告?其他?
  • 以上代码在 Vaadin 7 中完美运行,但在 Vaadin 8 中无法运行。在 Vaadin 8 中不存在 isValid() 方法。我基本上想知道如何在 Vaadin 中使用正则表达式验证文本字段8(我只知道如何为 Vaadin 7 做我上面指出的)谢谢。
  • 你查看documentation了吗?应该足够开始了。如果您对此有具体问题,我们一定可以为您提供帮助。

标签: java vaadin vaadin7 vaadin8


【解决方案1】:

我在 Vaadin 上做了一些工作,但我没有环顾“验证器”,所以我会提出一个更简单的方法:

TextField txtFirstname = new TextField(); 
txtFirstname.setInputPrompt("Enter the firstname e.g. John or Jane");
String pattern = "^[a-zA-Z _\\-'\" ]{3,25}$";

txtFirstname.addBlurListener(new BlurListener() {           
    @Override 
    public void blur(BlurEvent event) { 

        if(!txtFirstname.getValue().match(pattern)){  //<- basic string check
            txtFirstname.setValidationVisible(true); 
            //txtFirstname.focus(); 
        } 
        else if(txtFirstname.isValid()==true){ 
             txtFirstname.setValidationVisible(false); 
        } 
   } 
}); 

并使用!booleanValue 而不是booleanValue==false

【讨论】:

  • 从来没有想过,谢谢。 .setValidationVisible 和 isValid() 方法在 Vaadin 8 中已弃用,但您的代码(将输入与正则表达式匹配)应该可以工作
  • 这不是 Vaadin 用于验证表单字段的方式。首选方法是使用Binder 将字段绑定到其数据。使用 Binder,您可以像使用 Vaadin 7 一样添加验证器/转换器。请参阅 docs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
相关资源
最近更新 更多