2017-08-25 17 views
0

私は、vaadin 8に移行したいシステムを持っています。正規表現に基づいてTextFieldを検証する方法のサポートをリクエストしたいと思っていました。私はVaadin 7で動作するコードを持っていますが、Vaadin 8では動作しません。以下のようなコードサンプルが高く評価されます。Vaadin 8フォームでTextFieldを検証する方法

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

あなたを使用します詳細を与えるかもしれない、あなたはエラーがありますか?警告?他の? – azro

+0

上記のコードはVaadin 7では完全に機能しますが、Vaadin 8では機能しません。Vaadin 8ではisValid()メソッドが存在しません。基本的にVaadin 8の正規表現を使用してテキストフィールドを検証する方法を知りたかったのです私が上に示したようにVaadin 7のためにそれをしなさい)ありがとう。 –

+0

[documentation](https://vaadin.com/docs/-/part/framework/components/components-fields.html#validating-field-values)をチェックしましたか?開始するだけで十分です。具体的な質問がある場合は、必ずお手伝いできます。 –

答えて

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

+0

感謝の気持ちは決してありません。 Vaadin 8では.setValidationVisibleメソッドとisValid()メソッドが使用されていませんでしたが、コード(入力を正規表現に一致させる)は動作するはずです –

+2

これはVaadinがフォームフィールドの検証を意図したものではありません。好ましい方法は、フィールドをそのデータにバインドするために 'Binder'を使うことです。 'Binder'では、Vaadin 7と同じように、バリデータ/コンバーターを追加することができます。[docs](https://vaadin.com/docs/-part/framework/components/components-fields.html#validating-field)を参照してください。値) –