0

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 からテキストにアクセスできないことです。私は ChangeEvent についてあまり知りませんし、そこからテキストを取得する方法があるかどうかもわかりません。

フォームの送信時にフィールドとそれに対応する FormFieldData オブジェクトを反復処理する以外に、データがフォームに入力されるときにリアルタイムでこれを行う方法へのポインターを本当に感謝します。

4

1 に答える 1

1

まず、変数を作成できますfinal。問題ありません。

何らかの理由でそれをしたくない場合は、次TextBoxのようにイベントから取得できます。

textBox.addValueChangeHandler(new ValueChangeHandler(){
    @Overrride
    public void onValueChange(ChangeEvent event){
        TextBox box = (TextBox) event.getSource();
        // Do whatever you need to here
    }
});

ValueChangeHandlerおそらく の代わりにも探しているでしょうChangeHandler

于 2015-08-17T15:48:19.477 に答える