Wicket-IValidator在TextField为空时未调用validate



我有一个实现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添加到Form.

来自IValidator:的JavaDoc

接口,表示可以验证IValidatable对象的验证器。

除非验证器也实现CCD_ 10接口,Wicket不会将null值传递给IValidator#validate(IValidatable)方法。

它是按设计的,您应该实现INullAcceptingValidator

最新更新