Wicket - 当TextField为空时,IValidator不调用validate

时间:2012-09-10 14:56:52

标签: java forms validation wicket

我有一个实现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添加到表单。

1 个答案:

答案 0 :(得分:8)

来自IValidator的JavaDoc:

  

表示可以验证IValidatable对象的验证程序的接口。

     

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

它符合设计,您应该实现INullAcceptingValidator