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