2

を実装するクラスがありIValidatorます。このバリデータークラスを自分のに追加するTextFieldと、オーバーライドされたメソッドvalidate(Invalidatable<T>)が呼び出されます。ただし、TextFieldが空の場合、メソッドは呼び出されず、検証は行われません。なぜこうなった?これは予想される動作ですか?

バリデータークラス

public class CorporateNameValidator implements IValidator<String> {

        private static final String ERROR_EMPTY = "Error";

        @Override
        public void validate(IValidatable<String> validatable) {

            //Method not called when TextField has blank value.

            final String name = validatable.getValue();

            info("NAME: " + name);
        }
    }

TextFieldのインスタンス化

corporateNameInput = new TextField<String>(CORPORATE_NAME_INPUT_ID, new PropertyModel<String>(this, ""));

TextFieldプロパティの設定

corporateNameInput.add(new CorporateNameValidator()); corporateNameInput.setOutputMarkupPlaceholderTag(true);

次に、TextFieldをフォームに追加します。

4

1 に答える 1

11

のJavaDocからIValidator

IValidatableオブジェクトを検証できるバリデーターを表すインターフェース。

バリデーターがインターフェースも実装しない限りINullAcceptingValidator、Wicketはメソッドnullに値を渡しません。IValidator#validate(IValidatable)

これは設計どおりであり、INullAcceptingValidator代わりに実装する必要があります。

于 2012-09-10T15:09:17.340 に答える