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);
        }
    }

实例化文本域

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

设置文本字段属性

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 回答