如何验证Vaadin 8表单中的TextField

时间:2017-08-25 07:49:52

标签: java vaadin vaadin7 vaadin8

我有一个系统要迁移到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); 
            } 
        } 
    }); 

1 个答案:

答案 0 :(得分:0)

我在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